'use strict'; const path = require('path'); const fse = require('fs-extra'); // mock to test functionality bound to a serverless plugin class ServerlessPlugin { constructor(serverless, options, testSubject) { this.options = options; this.serverless = serverless; Object.assign(this, testSubject); } } function installPlugin(installDir, PluginClass) { const pluginPkg = { name: path.basename(installDir), version: '0.0.0' }; const className = new PluginClass().constructor.name; fse.outputFileSync(path.join(installDir, 'package.json'), JSON.stringify(pluginPkg), 'utf8'); fse.outputFileSync( path.join(installDir, 'index.js'), `"use strict";\n${PluginClass.toString()}\nmodule.exports = ${className}`, 'utf8' ); } module.exports = { ServerlessPlugin, installPlugin, };