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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy