From 7234f6a706a209aa2d79259110328752e9ae3928 Mon Sep 17 00:00:00 2001 From: Jonas Berlin Date: Fri, 25 Aug 2023 04:48:00 +0300 Subject: [PATCH] fix: update RuleTester JSDoc and deprecations (#17496) * RuleTester: Allow new-style rule definitions * RuleTester: Add check for legacy rule API usage warning for defineRule() * RuleTester: Move typedef import to correct location * FlatRuleTester: Allow new-style rule definitions * FlatRuleTester: Fix copypaste bug --- lib/rule-tester/flat-rule-tester.js | 3 ++- lib/rule-tester/rule-tester.js | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/rule-tester/flat-rule-tester.js b/lib/rule-tester/flat-rule-tester.js index f297965ec33..5a93be1cce8 100644 --- a/lib/rule-tester/flat-rule-tester.js +++ b/lib/rule-tester/flat-rule-tester.js @@ -32,6 +32,7 @@ const { ConfigArraySymbol } = require("@humanwhocodes/config-array"); /** @typedef {import("../shared/types").Parser} Parser */ /** @typedef {import("../shared/types").LanguageOptions} LanguageOptions */ +/** @typedef {import("../shared/types").Rule} Rule */ /** @@ -446,7 +447,7 @@ class FlatRuleTester { /** * Adds a new rule test to execute. * @param {string} ruleName The name of the rule to run. - * @param {Function} rule The rule to test. + * @param {Function | Rule} rule The rule to test. * @param {{ * valid: (ValidTestCase | string)[], * invalid: InvalidTestCase[] diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index a61f4028609..030a986867f 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -62,6 +62,7 @@ const { SourceCode } = require("../source-code"); //------------------------------------------------------------------------------ /** @typedef {import("../shared/types").Parser} Parser */ +/** @typedef {import("../shared/types").Rule} Rule */ /** @@ -508,17 +509,20 @@ class RuleTester { /** * Define a rule for one particular run of tests. * @param {string} name The name of the rule to define. - * @param {Function} rule The rule definition. + * @param {Function | Rule} rule The rule definition. * @returns {void} */ defineRule(name, rule) { + if (typeof rule === "function") { + emitLegacyRuleAPIWarning(name); + } this.rules[name] = rule; } /** * Adds a new rule test to execute. * @param {string} ruleName The name of the rule to run. - * @param {Function} rule The rule to test. + * @param {Function | Rule} rule The rule to test. * @param {{ * valid: (ValidTestCase | string)[], * invalid: InvalidTestCase[]