Skip to content

Commit

Permalink
fix: do not set path to plugin config defined as a Function or an A…
Browse files Browse the repository at this point in the history
…rray

If a plugin hook was defined as a `Function` or an `Array` the `path` property would be set to the default value.
Even if this bug had no actual negative impact, it should be fixed so the code would perform as intended.
  • Loading branch information
pvdlg committed Jul 10, 2018
1 parent 071dcce commit f93eeb7
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
4 changes: 2 additions & 2 deletions lib/plugins/index.js
@@ -1,4 +1,4 @@
const {isArray, isObject, omit, castArray, isUndefined} = require('lodash');
const {isPlainObject, omit, castArray, isUndefined} = require('lodash');
const AggregateError = require('aggregate-error');
const getError = require('../get-error');
const PLUGINS_DEFINITIONS = require('../definitions/plugins');
Expand All @@ -15,7 +15,7 @@ module.exports = (options, pluginsPath, logger) => {
pluginConfs = def;
} else {
// If an object is passed and the path is missing, set the default one for single plugins
if (isObject(options[pluginType]) && !options[pluginType].path && !isArray(def)) {
if (isPlainObject(options[pluginType]) && !options[pluginType].path && castArray(def).length === 1) {
options[pluginType].path = def;
}
if (config && !config.validator(options[pluginType])) {
Expand Down
13 changes: 11 additions & 2 deletions test/plugins/plugins.test.js
Expand Up @@ -116,11 +116,20 @@ test.serial('Export plugins loaded from the dependency of a shareable config fil
});

test('Use default when only options are passed for a single plugin', t => {
const plugins = getPlugins({generateNotes: {}, analyzeCommits: {}}, {}, t.context.logger);
const analyzeCommits = {};
const success = () => {};
const fail = [() => {}];

const plugins = getPlugins({analyzeCommits, success, fail}, {}, t.context.logger);

// Verify the module returns a function for each plugin
t.is(typeof plugins.generateNotes, 'function');
t.is(typeof plugins.analyzeCommits, 'function');
t.is(typeof plugins.success, 'function');
t.is(typeof plugins.fail, 'function');

// Verify only the plugins defined as an object with no `path` are set to the default value
t.falsy(success.path);
t.falsy(fail.path);
});

test('Merge global options with plugin options', async t => {
Expand Down

0 comments on commit f93eeb7

Please sign in to comment.