diff --git a/index.js b/index.js index 2f732a8a..65644da0 100644 --- a/index.js +++ b/index.js @@ -26,7 +26,7 @@ marked.setOptions({renderer: new TerminalRenderer()}); /* eslint complexity: off */ 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.'); @@ -241,7 +241,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 67961e6d..08f8075b 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -126,6 +126,7 @@ test('Plugins are called with expected values', async t => { publish: [publish, pluginNoop], success, }; + const envCi = {branch: 'master', isCi: true, isPr: false}; const releases = [ { @@ -144,7 +145,7 @@ test('Plugins are called with expected values', async t => { 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, @@ -160,6 +161,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(verifyConditions1.args[0][1].branch, branch); t.deepEqual(verifyConditions1.args[0][1].branches, branches); t.deepEqual(verifyConditions1.args[0][1].logger, t.context.logger); + t.deepEqual(verifyConditions1.args[0][1].envCi, envCi); t.is(verifyConditions2.callCount, 1); t.deepEqual(verifyConditions2.args[0][0], config); t.deepEqual(verifyConditions2.args[0][1].cwd, cwd); @@ -167,6 +169,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(verifyConditions2.args[0][1].branch, branch); t.deepEqual(verifyConditions2.args[0][1].branches, branches); t.deepEqual(verifyConditions2.args[0][1].logger, t.context.logger); + t.deepEqual(verifyConditions2.args[0][1].envCi, envCi); t.is(generateNotes1.callCount, 2); t.is(generateNotes2.callCount, 2); @@ -188,6 +191,7 @@ test('Plugins are called with expected values', async t => { gitTag: 'v1.0.0', name: 'v1.0.0', }); + t.deepEqual(generateNotes2.args[0][1].envCi, envCi); t.deepEqual(generateNotes2.args[0][0], config); t.deepEqual(generateNotes2.args[0][1].options, options); @@ -206,6 +210,7 @@ test('Plugins are called with expected values', async t => { name: 'v1.0.0', notes: notes1, }); + t.deepEqual(generateNotes2.args[0][1].envCi, envCi); t.deepEqual(generateNotes3.args[0][0], config); t.deepEqual(generateNotes3.args[0][1].options, options); @@ -224,6 +229,7 @@ test('Plugins are called with expected values', async t => { name: 'v1.0.0', notes: `${notes1}\n\n${notes2}`, }); + t.deepEqual(generateNotes3.args[0][1].envCi, envCi); branch.tags.push({ version: '1.0.0', @@ -251,6 +257,7 @@ test('Plugins are called with expected values', async t => { }); t.deepEqual(addChannel.args[0][1].commits[0].hash, commits[1].hash); t.deepEqual(addChannel.args[0][1].commits[0].message, commits[1].message); + t.deepEqual(addChannel.args[0][1].envCi, envCi); t.is(analyzeCommits.callCount, 1); t.deepEqual(analyzeCommits.args[0][0], config); @@ -261,6 +268,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); @@ -272,6 +280,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.deepEqual(generateNotes1.args[1][0], config); t.deepEqual(generateNotes1.args[1][1].options, options); @@ -282,6 +291,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(generateNotes1.args[1][1].commits[0].hash, commits[0].hash); t.deepEqual(generateNotes1.args[1][1].commits[0].message, commits[0].message); t.deepEqual(generateNotes1.args[1][1].nextRelease, nextRelease); + t.deepEqual(generateNotes1.args[1][1].envCi, envCi); t.deepEqual(generateNotes2.args[1][0], config); t.deepEqual(generateNotes2.args[1][1].options, options); @@ -292,6 +302,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(generateNotes2.args[1][1].commits[0].hash, commits[0].hash); t.deepEqual(generateNotes2.args[1][1].commits[0].message, commits[0].message); t.deepEqual(generateNotes2.args[1][1].nextRelease, {...nextRelease, notes: notes1}); + t.deepEqual(generateNotes2.args[1][1].envCi, envCi); t.deepEqual(generateNotes3.args[1][0], config); t.deepEqual(generateNotes3.args[1][1].options, options); @@ -302,6 +313,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(generateNotes3.args[1][1].commits[0].hash, commits[0].hash); t.deepEqual(generateNotes3.args[1][1].commits[0].message, commits[0].message); t.deepEqual(generateNotes3.args[1][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}`}); + t.deepEqual(generateNotes3.args[1][1].envCi, envCi); t.is(prepare.callCount, 1); t.deepEqual(prepare.args[0][0], config); @@ -313,6 +325,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(publish.callCount, 1); t.deepEqual(publish.args[0][0], config); @@ -324,6 +337,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(publish.args[0][1].commits[0].hash, commits[0].hash); t.deepEqual(publish.args[0][1].commits[0].message, commits[0].message); t.deepEqual(publish.args[0][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`}); + t.deepEqual(publish.args[0][1].envCi, envCi); t.is(success.callCount, 2); t.deepEqual(success.args[0][0], config); @@ -344,6 +358,7 @@ test('Plugins are called with expected values', async t => { notes: `${notes1}\n\n${notes2}\n\n${notes3}`, }); t.deepEqual(success.args[0][1].releases, [releases[0]]); + t.deepEqual(success.args[0][1].envCi, envCi); t.deepEqual(success.args[1][0], config); t.deepEqual(success.args[1][1].options, options); @@ -355,6 +370,7 @@ test('Plugins are called with expected values', async t => { t.deepEqual(success.args[1][1].commits[0].message, commits[0].message); t.deepEqual(success.args[1][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`}); t.deepEqual(success.args[1][1].releases, [releases[1], releases[2]]); + t.deepEqual(success.args[1][1].envCi, envCi); t.deepEqual(result, { lastRelease,