diff --git a/lib/__tests__/standalone.test.js b/lib/__tests__/standalone.test.js index 197b326647..b62971e6ac 100644 --- a/lib/__tests__/standalone.test.js +++ b/lib/__tests__/standalone.test.js @@ -323,22 +323,40 @@ describe("standalone with config locatable from process.cwd not file", () => { }) }) -it("Setting `plugins` inside `configOverrides` object should overrides the ones set in `config` object", () => { - return standalone({ - code: ".bar {}", - configBasedir: __dirname, - config: { - plugins: [], - rules: { - "plugin/warn-about-bar": "always", +describe("configOverrides", () => { + it("Setting `plugins` inside `**/__tests__/**` object should override the ones set in `config` object", () => { + return standalone({ + code: ".bar {}", + configBasedir: __dirname, + config: { + plugins: [], + rules: { + "plugin/warn-about-bar": "always", + }, }, - }, - configOverrides: { - plugins: ["./fixtures/plugin-warn-about-bar"], - }, - }).then((linted) => { - expect(linted.results[0].warnings.length).toBe(1) - expect(linted.results[0].warnings[0].text).toBe("found .bar (plugin/warn-about-bar)") + configOverrides: { + plugins: ["./fixtures/plugin-warn-about-bar"], + }, + }).then((linted) => { + expect(linted.results[0].warnings.length).toBe(1) + expect(linted.results[0].warnings[0].text).toBe("found .bar (plugin/warn-about-bar)") + }) + }) + + it("Setting `extends` inside `configOverrides` object should override the ones set in `config` object", () => { + return standalone({ + code: ".bar {}", + configBasedir: __dirname, + config: { + extends: ["foo"], + }, + configOverrides: { + extends: ["./fixtures/config-block-no-empty"], + }, + }).then((linted) => { + expect(linted.results[0].warnings.length).toBe(1) + expect(linted.results[0].warnings[0].text).toContain("block-no-empty") + }) }) }) diff --git a/lib/augmentConfig.js b/lib/augmentConfig.js index 19bae8a3a9..5e3bf251cf 100644 --- a/lib/augmentConfig.js +++ b/lib/augmentConfig.js @@ -18,9 +18,11 @@ const FILE_NOT_FOUND_ERROR_CODE = "ENOENT" function augmentConfigBasic( stylelint/*: stylelint$internalApi*/, config/*: stylelint$config*/, - configDir/*: string*/ + configDir/*: string*/, + allowOverrides/*:: ?: boolean*/ )/*: Promise*/ { return Promise.resolve().then(() => { + if (!allowOverrides) return config return _.merge(config, stylelint._options.configOverrides) }).then(augmentedConfig => { return extendConfig(stylelint, augmentedConfig, configDir) @@ -67,7 +69,7 @@ function augmentConfigFull( const configDir = stylelint._options.configBasedir || path.dirname(filepath || "") - return augmentConfigBasic(stylelint, config, configDir).then(augmentedConfig => { + return augmentConfigBasic(stylelint, config, configDir, true).then(augmentedConfig => { return addIgnorePatterns(stylelint, augmentedConfig) }).then(augmentedConfig => { return addPluginFunctions(augmentedConfig)