diff --git a/tests/fixtures/eslint.config_with_rules.js b/tests/fixtures/eslint.config_with_rules.js new file mode 100644 index 00000000000..6817217d965 --- /dev/null +++ b/tests/fixtures/eslint.config_with_rules.js @@ -0,0 +1,5 @@ +module.exports = [{ + rules: { + quotes: ["error", "single"] + } +}]; diff --git a/tests/lib/eslint/flat-eslint.js b/tests/lib/eslint/flat-eslint.js index d52b0da3aeb..5bf27863d77 100644 --- a/tests/lib/eslint/flat-eslint.js +++ b/tests/lib/eslint/flat-eslint.js @@ -4751,6 +4751,61 @@ describe("FlatESLint", () => { assert.strictEqual(messages.length, 0); }); + it("should be inserted before overrideConfig", async () => { + const eslint = new FlatESLint({ + overrideConfigFile: true, + baseConfig: { + rules: { + semi: 2 + } + }, + overrideConfig: { + rules: { + semi: 1 + } + } + }); + + const [{ messages }] = await eslint.lintText("foo"); + + assert.strictEqual(messages.length, 1); + assert.strictEqual(messages[0].ruleId, "semi"); + assert.strictEqual(messages[0].severity, 1); + }); + + it("should be inserted before configs from the config file and overrideConfig", async () => { + const eslint = new FlatESLint({ + overrideConfigFile: getFixturePath("eslint.config_with_rules.js"), + baseConfig: { + rules: { + quotes: ["error", "double"], + semi: "error" + } + }, + overrideConfig: { + rules: { + quotes: "warn" + } + } + }); + + const [{ messages }] = await eslint.lintText('const foo = "bar"'); + + /* + * baseConfig: { quotes: ["error", "double"], semi: "error" } + * eslint.config_with_rules.js: { quotes: ["error", "single"] } + * overrideConfig: { quotes: "warn" } + * + * Merged config: { quotes: ["warn", "single"], semi: "error" } + */ + + assert.strictEqual(messages.length, 2); + assert.strictEqual(messages[0].ruleId, "quotes"); + assert.strictEqual(messages[0].severity, 1); + assert.strictEqual(messages[1].ruleId, "semi"); + assert.strictEqual(messages[1].severity, 2); + }); + it("when it has 'files' they should be intepreted as relative to the config file", async () => { /*