Skip to content

Commit

Permalink
fix: FlatESLint#getRulesMetaForResults shouldn't throw on unknown rul…
Browse files Browse the repository at this point in the history
…es (#17393)

* fix: FlatESLint#getRulesMetaForResults shouldn't throw on unknown rules

Fixes #17343

* refactor test check

Co-authored-by: Nicholas C. Zakas <nicholas@humanwhocodes.com>

---------

Co-authored-by: Nicholas C. Zakas <nicholas@humanwhocodes.com>
  • Loading branch information
mdjermanovic and nzakas committed Jul 21, 2023
1 parent 80dffed commit 9803c7c
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 5 deletions.
8 changes: 3 additions & 5 deletions lib/eslint/flat-eslint.js
Expand Up @@ -714,12 +714,10 @@ class FlatESLint {
}
const rule = getRuleFromConfig(ruleId, config);

// ensure the rule exists
if (!rule) {
throw new TypeError(`Could not find the rule "${ruleId}".`);
// ignore unknown rules
if (rule) {
resultRules.set(ruleId, rule);
}

resultRules.set(ruleId, rule);
}
}

Expand Down
36 changes: 36 additions & 0 deletions tests/lib/eslint/flat-eslint.js
Expand Up @@ -4478,6 +4478,42 @@ describe("FlatESLint", () => {

assert.deepStrictEqual(rulesMeta, { "no-var": coreRules.get("no-var").meta });
});

it("should return empty object if all messages are related to unknown rules", async () => {
const engine = new FlatESLint({
overrideConfigFile: true
});

const results = await engine.lintText("// eslint-disable-line foo, bar/baz, bar/baz/qux");

assert.strictEqual(results[0].messages.length, 3);
assert.strictEqual(results[0].messages[0].ruleId, "foo");
assert.strictEqual(results[0].messages[1].ruleId, "bar/baz");
assert.strictEqual(results[0].messages[2].ruleId, "bar/baz/qux");

const rulesMeta = engine.getRulesMetaForResults(results);

assert.strictEqual(Object.keys(rulesMeta).length, 0);
});

it("should return object with meta of known rules if some messages are related to unknown rules", async () => {
const engine = new FlatESLint({
overrideConfigFile: true,
overrideConfig: { rules: { "no-var": "warn" } }
});

const results = await engine.lintText("// eslint-disable-line foo, bar/baz, bar/baz/qux\nvar x;");

assert.strictEqual(results[0].messages.length, 4);
assert.strictEqual(results[0].messages[0].ruleId, "foo");
assert.strictEqual(results[0].messages[1].ruleId, "bar/baz");
assert.strictEqual(results[0].messages[2].ruleId, "bar/baz/qux");
assert.strictEqual(results[0].messages[3].ruleId, "no-var");

const rulesMeta = engine.getRulesMetaForResults(results);

assert.deepStrictEqual(rulesMeta, { "no-var": coreRules.get("no-var").meta });
});
});

describe("outputFixes()", () => {
Expand Down

0 comments on commit 9803c7c

Please sign in to comment.