From 619f3fd17324c7b71bf17e02047d0c6dc7e5109e Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Tue, 28 Mar 2023 22:07:17 +1030 Subject: [PATCH] fix: correctly handle `null` default config in `RuleTester` (#17023) * fix: correctly handle `null` default config in `RuleTester` * fix: update flatruletester --- lib/rule-tester/flat-rule-tester.js | 2 +- lib/rule-tester/rule-tester.js | 2 +- tests/lib/rule-tester/flat-rule-tester.js | 14 ++++++++------ tests/lib/rule-tester/rule-tester.js | 14 ++++++++------ 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/rule-tester/flat-rule-tester.js b/lib/rule-tester/flat-rule-tester.js index 510cbc688ce..97055d104f4 100644 --- a/lib/rule-tester/flat-rule-tester.js +++ b/lib/rule-tester/flat-rule-tester.js @@ -345,7 +345,7 @@ class FlatRuleTester { * @returns {void} */ static setDefaultConfig(config) { - if (typeof config !== "object") { + if (typeof config !== "object" || config === null) { throw new TypeError("FlatRuleTester.setDefaultConfig: config must be an object"); } sharedDefaultConfig = config; diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 48df3b79b94..8518299d0b0 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -412,7 +412,7 @@ class RuleTester { * @returns {void} */ static setDefaultConfig(config) { - if (typeof config !== "object") { + if (typeof config !== "object" || config === null) { throw new TypeError("RuleTester.setDefaultConfig: config must be an object"); } defaultConfig = config; diff --git a/tests/lib/rule-tester/flat-rule-tester.js b/tests/lib/rule-tester/flat-rule-tester.js index bdc196e1653..c73099d1d54 100644 --- a/tests/lib/rule-tester/flat-rule-tester.js +++ b/tests/lib/rule-tester/flat-rule-tester.js @@ -142,12 +142,14 @@ describe("FlatRuleTester", () => { FlatRuleTester.setDefaultConfig(config); }; } - assert.throw(setConfig()); - assert.throw(setConfig(1)); - assert.throw(setConfig(3.14)); - assert.throw(setConfig("foo")); - assert.throw(setConfig(null)); - assert.throw(setConfig(true)); + const errorMessage = "FlatRuleTester.setDefaultConfig: config must be an object"; + + assert.throw(setConfig(), errorMessage); + assert.throw(setConfig(1), errorMessage); + assert.throw(setConfig(3.14), errorMessage); + assert.throw(setConfig("foo"), errorMessage); + assert.throw(setConfig(null), errorMessage); + assert.throw(setConfig(true), errorMessage); }); it("should pass-through the globals config to the tester then to the to rule", () => { diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index e961dd9a516..096e639e95f 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -1412,12 +1412,14 @@ describe("RuleTester", () => { RuleTester.setDefaultConfig(config); }; } - assert.throw(setConfig()); - assert.throw(setConfig(1)); - assert.throw(setConfig(3.14)); - assert.throw(setConfig("foo")); - assert.throw(setConfig(null)); - assert.throw(setConfig(true)); + const errorMessage = "RuleTester.setDefaultConfig: config must be an object"; + + assert.throw(setConfig(), errorMessage); + assert.throw(setConfig(1), errorMessage); + assert.throw(setConfig(3.14), errorMessage); + assert.throw(setConfig("foo"), errorMessage); + assert.throw(setConfig(null), errorMessage); + assert.throw(setConfig(true), errorMessage); }); it("should pass-through the globals config to the tester then to the to rule", () => {