From b0bc49063bfba1e0ba174508c2c76b0cc121c105 Mon Sep 17 00:00:00 2001 From: Pierre-Denis Vanduynslager Date: Wed, 18 Oct 2017 16:31:13 -0400 Subject: [PATCH] fix: handle errors when verifyConditions and verifyRelease are a pipeline --- src/index.js | 2 +- src/lib/plugins.js | 25 +++++++++++++------------ src/pre.js | 2 +- test/pre.test.js | 6 +++--- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/index.js b/src/index.js index 01b53aa2..d27e425f 100644 --- a/src/index.js +++ b/src/index.js @@ -75,7 +75,7 @@ module.exports = async () => { log.verbose('pre', 'Running pre-script.'); log.verbose('pre', 'Veriying conditions.'); try { - await promisify(plugins.verifyConditions)(config); + await plugins.verifyConditions(config); } catch (err) { log[options.debug ? 'warn' : 'error']('pre', err.message); if (!options.debug) process.exit(1); diff --git a/src/lib/plugins.js b/src/lib/plugins.js index 58831de8..0cdc50cb 100644 --- a/src/lib/plugins.js +++ b/src/lib/plugins.js @@ -10,20 +10,21 @@ module.exports = options => { }; ['verifyConditions', 'verifyRelease'].forEach(plugin => { if (!Array.isArray(options[plugin])) { - plugins[plugin] = normalize( - options[plugin], - plugin === 'verifyConditions' ? '@semantic-release/condition-travis' : './plugin-noop' + plugins[plugin] = promisify( + normalize( + options[plugin], + plugin === 'verifyConditions' ? '@semantic-release/condition-travis' : './plugin-noop' + ) ); - return; + } else { + plugins[plugin] = async pluginOptions => { + return pSeries( + options[plugin].map(step => { + return () => promisify(normalize(step, './plugin-noop'))(pluginOptions); + }) + ); + }; } - - plugins[plugin] = async pluginOptions => { - return pSeries( - options[plugin].map(step => { - return () => promisify(normalize(step, './plugin-noop'))(pluginOptions); - }) - ); - }; }); return plugins; diff --git a/src/pre.js b/src/pre.js index f8d1d1c5..46e05b2f 100644 --- a/src/pre.js +++ b/src/pre.js @@ -17,7 +17,7 @@ module.exports = async config => { version: type === 'initial' ? '1.0.0' : semver.inc(lastRelease.version, type), }; - await promisify(verifyRelease)(assign({commits, lastRelease, nextRelease}, config)); + await verifyRelease(assign({commits, lastRelease, nextRelease}, config)); return nextRelease; }; diff --git a/test/pre.test.js b/test/pre.test.js index ea2ffec2..01db4d29 100644 --- a/test/pre.test.js +++ b/test/pre.test.js @@ -44,7 +44,7 @@ test.serial('Increase version', async t => { plugins: { getLastRelease: callbackify(getLastRelease), analyzeCommits: callbackify(analyzeCommits), - verifyRelease: callbackify(verifyRelease), + verifyRelease: verifyRelease, }, }); @@ -89,7 +89,7 @@ test.serial('Initial version', async t => { plugins: { getLastRelease: callbackify(getLastRelease), analyzeCommits: callbackify(analyzeCommits), - verifyRelease: callbackify(verifyRelease), + verifyRelease: verifyRelease, }, }); @@ -137,7 +137,7 @@ test.serial('Throws error if verifyRelease fails', async t => { plugins: { getLastRelease: callbackify(getLastRelease), analyzeCommits: callbackify(analyzeCommits), - verifyRelease: callbackify(verifyRelease), + verifyRelease: verifyRelease, }, }) );