From a8c747d59286e8dc5dbbaab14d18d2885d1d1a00 Mon Sep 17 00:00:00 2001 From: Pierre Vanduynslager Date: Fri, 20 Dec 2019 17:18:04 -0500 Subject: [PATCH] feat: pass `envi-ci` values to plugins context --- index.js | 10 ++++++++-- test/index.test.js | 12 +++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index e480f190c0..6098b2934e 100644 --- a/index.js +++ b/index.js @@ -23,7 +23,7 @@ marked.setOptions({renderer: new TerminalRenderer()}); async function run(context, plugins) { const {cwd, env, options, logger} = context; - const {isCi, branch: ciBranch, isPr} = envCi({env, cwd}); + const {isCi, branch: ciBranch, isPr} = context.envCi; if (!isCi && !options.dryRun && !options.noCi) { logger.warn('This run was not triggered in a known CI environment, running in dry-run mode.'); @@ -160,7 +160,13 @@ module.exports = async (opts = {}, {cwd = process.cwd(), env = process.env, stdo {silent: false, streams: [process.stdout, process.stderr, stdout, stderr].filter(Boolean)}, hideSensitive(env) ); - const context = {cwd, env, stdout: stdout || process.stdout, stderr: stderr || process.stderr}; + const context = { + cwd, + env, + stdout: stdout || process.stdout, + stderr: stderr || process.stderr, + envCi: envCi({env, cwd}), + }; context.logger = getLogger(context); context.logger.log(`Running ${pkg.name} version ${pkg.version}`); try { diff --git a/test/index.test.js b/test/index.test.js index 12b35d9580..a50b7e5790 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -75,10 +75,11 @@ test('Plugins are called with expected values', async t => { publish: [publish1, pluginNoop], success, }; + const envCi = {branch: 'master', isCi: true, isPr: false}; const semanticRelease = requireNoCache('..', { './lib/get-logger': () => t.context.logger, - 'env-ci': () => ({isCi: true, branch: 'master', isPr: false}), + 'env-ci': () => envCi, }); const result = await semanticRelease(options, { cwd, @@ -97,6 +98,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(verifyConditions2.args[0][1].cwd, cwd); t.deepEqual(verifyConditions2.args[0][1].options, options); t.deepEqual(verifyConditions2.args[0][1].logger, t.context.logger); + t.deepEqual(verifyConditions2.args[0][1].envCi, envCi); t.is(analyzeCommits.callCount, 1); t.deepEqual(analyzeCommits.args[0][0], config); @@ -105,6 +107,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(analyzeCommits.args[0][1].lastRelease, lastRelease); t.deepEqual(analyzeCommits.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(analyzeCommits.args[0][1].commits[0].message, commits[0].message); + t.deepEqual(analyzeCommits.args[0][1].envCi, envCi); t.is(verifyRelease.callCount, 1); t.deepEqual(verifyRelease.args[0][0], config); @@ -114,6 +117,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(verifyRelease.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(verifyRelease.args[0][1].commits[0].message, commits[0].message); t.deepEqual(verifyRelease.args[0][1].nextRelease, nextRelease); + t.deepEqual(verifyRelease.args[0][1].envCi, envCi); t.is(generateNotes1.callCount, 1); t.deepEqual(generateNotes1.args[0][0], config); @@ -123,6 +127,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(generateNotes1.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(generateNotes1.args[0][1].commits[0].message, commits[0].message); t.deepEqual(generateNotes1.args[0][1].nextRelease, nextRelease); + t.deepEqual(generateNotes1.args[0][1].envCi, envCi); t.is(generateNotes2.callCount, 1); t.deepEqual(generateNotes2.args[0][0], config); @@ -132,6 +137,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(generateNotes2.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(generateNotes2.args[0][1].commits[0].message, commits[0].message); t.deepEqual(generateNotes2.args[0][1].nextRelease, {...nextRelease, notes: notes1}); + t.deepEqual(generateNotes2.args[0][1].envCi, envCi); t.is(generateNotes3.callCount, 1); t.deepEqual(generateNotes3.args[0][0], config); @@ -141,6 +147,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(generateNotes3.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(generateNotes3.args[0][1].commits[0].message, commits[0].message); t.deepEqual(generateNotes3.args[0][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}`}); + t.deepEqual(generateNotes3.args[0][1].envCi, envCi); t.is(prepare.callCount, 1); t.deepEqual(prepare.args[0][0], config); @@ -150,6 +157,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(prepare.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(prepare.args[0][1].commits[0].message, commits[0].message); t.deepEqual(prepare.args[0][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`}); + t.deepEqual(prepare.args[0][1].envCi, envCi); t.is(publish1.callCount, 1); t.deepEqual(publish1.args[0][0], config); @@ -159,6 +167,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(publish1.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(publish1.args[0][1].commits[0].message, commits[0].message); t.deepEqual(publish1.args[0][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`}); + t.deepEqual(publish1.args[0][1].envCi, envCi); t.is(success.callCount, 1); t.deepEqual(success.args[0][0], config); @@ -172,6 +181,7 @@ test('Plugins are called with expected values', async t => { {...release1, ...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`, pluginName: '[Function: functionStub]'}, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`, pluginName: pluginNoop}, ]); + t.deepEqual(success.args[0][1].envCi, envCi); t.deepEqual(result, { lastRelease,