From 21c151f167960ffa9f43069bc109900ebf57aed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominykas=20Bly=C5=BE=C4=97?= Date: Wed, 13 Jan 2021 17:38:57 +0200 Subject: [PATCH] fix: normalize ci: false into noCi: true after configs get merged (#1732) thanks @dominykas This makes sure that options.ci is respected even when set inside a shareable config --- lib/get-config.js | 7 ++++--- test/get-config.test.js | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/get-config.js b/lib/get-config.js index bd40cecc1d..c54acfefca 100644 --- a/lib/get-config.js +++ b/lib/get-config.js @@ -27,9 +27,6 @@ module.exports = async (context, cliOptions) => { // Merge config file options and CLI/API options let options = {...config, ...cliOptions}; - if (options.ci === false) { - options.noCi = true; - } const pluginsPath = {}; let extendPaths; @@ -87,6 +84,10 @@ module.exports = async (context, cliOptions) => { ...(options.branches ? {branches: castArray(options.branches)} : {}), }; + if (options.ci === false) { + options.noCi = true; + } + debug('options values: %O', options); return {options, plugins: await plugins({...context, options}, pluginsPath)}; diff --git a/test/get-config.test.js b/test/get-config.test.js index 4e5b456708..ecec2b3a1a 100644 --- a/test/get-config.test.js +++ b/test/get-config.test.js @@ -505,10 +505,10 @@ test('Allow to unset properties defined in shareable config with "undefined"', a test('Throw an Error if one of the shareable config cannot be found', async (t) => { // Create a git repository, set the current working directory at the root of the repo const {cwd} = await gitRepo(); - const pkhOptions = {extends: ['./shareable1.json', 'non-existing-path']}; + const pkgOptions = {extends: ['./shareable1.json', 'non-existing-path']}; const options1 = {analyzeCommits: 'analyzeCommits'}; // Create package.json and shareable.json in repository root - await outputJson(path.resolve(cwd, 'package.json'), {release: pkhOptions}); + await outputJson(path.resolve(cwd, 'package.json'), {release: pkgOptions}); await outputJson(path.resolve(cwd, 'shareable1.json'), options1); await t.throwsAsync(t.context.getConfig({cwd}), { @@ -516,3 +516,20 @@ test('Throw an Error if one of the shareable config cannot be found', async (t) code: 'MODULE_NOT_FOUND', }); }); + +test('Convert "ci" option to "noCi" when set from extended config', async (t) => { + // Create a git repository, set the current working directory at the root of the repo + const {cwd} = await gitRepo(); + const pkgOptions = {extends: './no-ci.json'}; + const options = { + ci: false, + }; + // Create package.json and shareable.json in repository root + await outputJson(path.resolve(cwd, 'package.json'), {release: pkgOptions}); + await outputJson(path.resolve(cwd, 'no-ci.json'), options); + + const {options: result} = await t.context.getConfig({cwd}); + + t.is(result.ci, false); + t.is(result.noCi, true); +});