From a191cabbb3bc5867cb65d8aa8ae53e00cb38dc14 Mon Sep 17 00:00:00 2001 From: Kai Cataldo Date: Fri, 31 Jul 2020 18:53:49 -0400 Subject: [PATCH] Revert "Update: require `meta` for fixable rules in RuleTester (refs #13349) (#13489)" This reverts commit ecb2b7343a0d14fb57d297a16be6c1b176fb3dbf. --- lib/rule-tester/rule-tester.js | 10 --- tests/fixtures/testers/rule-tester/no-var.js | 48 ++++++------- tests/lib/rule-tester/rule-tester.js | 71 -------------------- 3 files changed, 22 insertions(+), 107 deletions(-) diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 905f34181218..3e3915767161 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -861,16 +861,6 @@ class RuleTester { ); } - // Rules that produce fixes must have `meta.fixable` property. - if (result.output !== item.code) { - assert.ok( - hasOwnProperty(rule, "meta"), - "Fixable rules should export a `meta.fixable` property." - ); - - // Linter throws if a rule that produced a fix has `meta` but doesn't have `meta.fixable`. - } - assertASTDidntChange(result.beforeAST, result.afterAST); } diff --git a/tests/fixtures/testers/rule-tester/no-var.js b/tests/fixtures/testers/rule-tester/no-var.js index 5841f15bfa13..382885613d25 100644 --- a/tests/fixtures/testers/rule-tester/no-var.js +++ b/tests/fixtures/testers/rule-tester/no-var.js @@ -7,31 +7,27 @@ // Rule Definition //------------------------------------------------------------------------------ -"use strict"; - -module.exports = { - - meta: { - fixable: "code" - }, - - create(context) { - - var sourceCode = context.getSourceCode(); - - return { - "VariableDeclaration": function(node) { - if (node.kind === "var") { - context.report({ - node: node, - loc: sourceCode.getFirstToken(node).loc, - message: "Bad var.", - fix: function(fixer) { - return fixer.remove(sourceCode.getFirstToken(node)); - } - }) - } +module.exports = function(context) { + + "use strict"; + + + var sourceCode = context.getSourceCode(); + + return { + + "VariableDeclaration": function(node) { + if (node.kind === "var") { + context.report({ + node: node, + loc: sourceCode.getFirstToken(node).loc, + message: "Bad var.", + fix: function(fixer) { + return fixer.remove(sourceCode.getFirstToken(node)); + } + }) } - }; - } + } + }; + }; diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index 3f2393621b6b..7e26e1a826c6 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -304,10 +304,6 @@ describe("RuleTester", () => { it("should use strict equality to compare output", () => { const replaceProgramWith5Rule = { - meta: { - fixable: "code" - }, - create: context => ({ Program(node) { context.report({ node, message: "bad", fix: fixer => fixer.replaceText(node, "5") }); @@ -1241,73 +1237,6 @@ describe("RuleTester", () => { }, "Error must specify 'messageId' if 'data' is used."); }); - // fixable rules with or without `meta` property - it("should not throw an error if a rule that has `meta.fixable` produces fixes", () => { - const replaceProgramWith5Rule = { - meta: { - fixable: "code" - }, - create(context) { - return { - Program(node) { - context.report({ node, message: "bad", fix: fixer => fixer.replaceText(node, "5") }); - } - }; - } - }; - - ruleTester.run("replaceProgramWith5", replaceProgramWith5Rule, { - valid: [], - invalid: [ - { code: "var foo = bar;", output: "5", errors: 1 } - ] - }); - }); - it("should throw an error if a new-format rule that doesn't have `meta` produces fixes", () => { - const replaceProgramWith5Rule = { - create(context) { - return { - Program(node) { - context.report({ node, message: "bad", fix: fixer => fixer.replaceText(node, "5") }); - } - }; - } - }; - - assert.throws(() => { - ruleTester.run("replaceProgramWith5", replaceProgramWith5Rule, { - valid: [], - invalid: [ - { code: "var foo = bar;", output: "5", errors: 1 } - ] - }); - }, "Fixable rules should export a `meta.fixable` property."); - }); - it("should throw an error if a legacy-format rule produces fixes", () => { - - /** - * Legacy-format rule (a function instead of an object with `create` method). - * @param {RuleContext} context The ESLint rule context object. - * @returns {Object} Listeners. - */ - function replaceProgramWith5Rule(context) { - return { - Program(node) { - context.report({ node, message: "bad", fix: fixer => fixer.replaceText(node, "5") }); - } - }; - } - - assert.throws(() => { - ruleTester.run("replaceProgramWith5", replaceProgramWith5Rule, { - valid: [], - invalid: [ - { code: "var foo = bar;", output: "5", errors: 1 } - ] - }); - }, "Fixable rules should export a `meta.fixable` property."); - }); - describe("suggestions", () => { it("should pass with valid suggestions (tested using desc)", () => { ruleTester.run("suggestions-basic", require("../../fixtures/testers/rule-tester/suggestions").basic, {