Skip to content

Commit 9803c7c

Browse files
mdjermanovicnzakas
andauthored
fix: FlatESLint#getRulesMetaForResults shouldn't throw on unknown rules (#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>
1 parent 80dffed commit 9803c7c

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

lib/eslint/flat-eslint.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -714,12 +714,10 @@ class FlatESLint {
714714
}
715715
const rule = getRuleFromConfig(ruleId, config);
716716

717-
// ensure the rule exists
718-
if (!rule) {
719-
throw new TypeError(`Could not find the rule "${ruleId}".`);
717+
// ignore unknown rules
718+
if (rule) {
719+
resultRules.set(ruleId, rule);
720720
}
721-
722-
resultRules.set(ruleId, rule);
723721
}
724722
}
725723

tests/lib/eslint/flat-eslint.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4478,6 +4478,42 @@ describe("FlatESLint", () => {
44784478

44794479
assert.deepStrictEqual(rulesMeta, { "no-var": coreRules.get("no-var").meta });
44804480
});
4481+
4482+
it("should return empty object if all messages are related to unknown rules", async () => {
4483+
const engine = new FlatESLint({
4484+
overrideConfigFile: true
4485+
});
4486+
4487+
const results = await engine.lintText("// eslint-disable-line foo, bar/baz, bar/baz/qux");
4488+
4489+
assert.strictEqual(results[0].messages.length, 3);
4490+
assert.strictEqual(results[0].messages[0].ruleId, "foo");
4491+
assert.strictEqual(results[0].messages[1].ruleId, "bar/baz");
4492+
assert.strictEqual(results[0].messages[2].ruleId, "bar/baz/qux");
4493+
4494+
const rulesMeta = engine.getRulesMetaForResults(results);
4495+
4496+
assert.strictEqual(Object.keys(rulesMeta).length, 0);
4497+
});
4498+
4499+
it("should return object with meta of known rules if some messages are related to unknown rules", async () => {
4500+
const engine = new FlatESLint({
4501+
overrideConfigFile: true,
4502+
overrideConfig: { rules: { "no-var": "warn" } }
4503+
});
4504+
4505+
const results = await engine.lintText("// eslint-disable-line foo, bar/baz, bar/baz/qux\nvar x;");
4506+
4507+
assert.strictEqual(results[0].messages.length, 4);
4508+
assert.strictEqual(results[0].messages[0].ruleId, "foo");
4509+
assert.strictEqual(results[0].messages[1].ruleId, "bar/baz");
4510+
assert.strictEqual(results[0].messages[2].ruleId, "bar/baz/qux");
4511+
assert.strictEqual(results[0].messages[3].ruleId, "no-var");
4512+
4513+
const rulesMeta = engine.getRulesMetaForResults(results);
4514+
4515+
assert.deepStrictEqual(rulesMeta, { "no-var": coreRules.get("no-var").meta });
4516+
});
44814517
});
44824518

44834519
describe("outputFixes()", () => {

0 commit comments

Comments
 (0)