fix: handle errors when verifyConditions and verifyRelease are a pipeline

This commit is contained in:
Pierre-Denis Vanduynslager 2017-10-18 16:31:13 -04:00 committed by Gregor Martynus
parent 580ad9c3d2
commit b0bc49063b
4 changed files with 18 additions and 17 deletions

View File

@ -75,7 +75,7 @@ module.exports = async () => {
log.verbose('pre', 'Running pre-script.'); log.verbose('pre', 'Running pre-script.');
log.verbose('pre', 'Veriying conditions.'); log.verbose('pre', 'Veriying conditions.');
try { try {
await promisify(plugins.verifyConditions)(config); await plugins.verifyConditions(config);
} catch (err) { } catch (err) {
log[options.debug ? 'warn' : 'error']('pre', err.message); log[options.debug ? 'warn' : 'error']('pre', err.message);
if (!options.debug) process.exit(1); if (!options.debug) process.exit(1);

View File

@ -10,20 +10,21 @@ module.exports = options => {
}; };
['verifyConditions', 'verifyRelease'].forEach(plugin => { ['verifyConditions', 'verifyRelease'].forEach(plugin => {
if (!Array.isArray(options[plugin])) { if (!Array.isArray(options[plugin])) {
plugins[plugin] = normalize( plugins[plugin] = promisify(
options[plugin], normalize(
plugin === 'verifyConditions' ? '@semantic-release/condition-travis' : './plugin-noop' 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; return plugins;

View File

@ -17,7 +17,7 @@ module.exports = async config => {
version: type === 'initial' ? '1.0.0' : semver.inc(lastRelease.version, type), 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; return nextRelease;
}; };

View File

@ -44,7 +44,7 @@ test.serial('Increase version', async t => {
plugins: { plugins: {
getLastRelease: callbackify(getLastRelease), getLastRelease: callbackify(getLastRelease),
analyzeCommits: callbackify(analyzeCommits), analyzeCommits: callbackify(analyzeCommits),
verifyRelease: callbackify(verifyRelease), verifyRelease: verifyRelease,
}, },
}); });
@ -89,7 +89,7 @@ test.serial('Initial version', async t => {
plugins: { plugins: {
getLastRelease: callbackify(getLastRelease), getLastRelease: callbackify(getLastRelease),
analyzeCommits: callbackify(analyzeCommits), analyzeCommits: callbackify(analyzeCommits),
verifyRelease: callbackify(verifyRelease), verifyRelease: verifyRelease,
}, },
}); });
@ -137,7 +137,7 @@ test.serial('Throws error if verifyRelease fails', async t => {
plugins: { plugins: {
getLastRelease: callbackify(getLastRelease), getLastRelease: callbackify(getLastRelease),
analyzeCommits: callbackify(analyzeCommits), analyzeCommits: callbackify(analyzeCommits),
verifyRelease: callbackify(verifyRelease), verifyRelease: verifyRelease,
}, },
}) })
); );