fix: do not clone stdout/stderr passed to pugins

This commit is contained in:
Pierre Vanduynslager 2018-08-04 20:24:54 -04:00
parent efb40000b4
commit 63d422ed5c
3 changed files with 12 additions and 5 deletions

View File

@ -1,4 +1,3 @@
const process = require('process');
const {template, pick} = require('lodash'); const {template, pick} = require('lodash');
const marked = require('marked'); const marked = require('marked');
const TerminalRenderer = require('marked-terminal'); const TerminalRenderer = require('marked-terminal');

View File

@ -1,11 +1,11 @@
const {dirname} = require('path'); const {dirname} = require('path');
const {isString, isPlainObject, isFunction, noop, cloneDeep} = require('lodash'); const {isString, isPlainObject, isFunction, noop, cloneDeep, omit} = require('lodash');
const resolveFrom = require('resolve-from'); const resolveFrom = require('resolve-from');
const getError = require('../get-error'); const getError = require('../get-error');
const {extractErrors} = require('../utils'); const {extractErrors} = require('../utils');
const PLUGINS_DEFINITIONS = require('../definitions/plugins'); const PLUGINS_DEFINITIONS = require('../definitions/plugins');
module.exports = ({cwd, options, logger}, type, pluginOpt, pluginsPath) => { module.exports = ({cwd, stdout, stderr, options, logger}, type, pluginOpt, pluginsPath) => {
if (!pluginOpt) { if (!pluginOpt) {
return noop; return noop;
} }
@ -31,7 +31,12 @@ module.exports = ({cwd, options, logger}, type, pluginOpt, pluginsPath) => {
const {outputValidator} = PLUGINS_DEFINITIONS[type] || {}; const {outputValidator} = PLUGINS_DEFINITIONS[type] || {};
try { try {
logger.log(`Start step "${type}" of plugin "${pluginName}"`); logger.log(`Start step "${type}" of plugin "${pluginName}"`);
const result = await func({...cloneDeep(input), logger: logger.scope(logger.scopeName, pluginName)}); const result = await func({
...cloneDeep(omit(input, ['stdout', 'stderr', 'logger'])),
stdout,
stderr,
logger: logger.scope(logger.scopeName, pluginName),
});
if (outputValidator && !outputValidator(result)) { if (outputValidator && !outputValidator(result)) {
throw getError(`E${type.toUpperCase()}OUTPUT`, {result, pluginName}); throw getError(`E${type.toUpperCase()}OUTPUT`, {result, pluginName});
} }

View File

@ -160,7 +160,10 @@ test('Plugin is called with "pluginConfig" (omitting "path", adding global confi
await plugin({param: 'param'}); await plugin({param: 'param'});
t.true( t.true(
pluginFunction.calledWith({conf: 'confValue', global: 'globalValue'}, {param: 'param', logger: t.context.logger}) pluginFunction.calledWithMatch(
{conf: 'confValue', global: 'globalValue'},
{param: 'param', logger: t.context.logger}
)
); );
}); });