From ed007c82ee9d2170c87500d98303554b5f90b915 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Thu, 29 Jul 2021 11:11:19 -0700 Subject: [PATCH] Chore: Simplify internal `no-invalid-meta` rule (#14842) --- .eslintrc.js | 4 ++ tests/tools/internal-rules/no-invalid-meta.js | 62 ------------------- tools/internal-rules/no-invalid-meta.js | 49 +-------------- 3 files changed, 5 insertions(+), 110 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index a7e0f1153d8..9bb665a3c48 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -66,10 +66,13 @@ module.exports = { rules: { "eslint-plugin/consistent-output": "error", "eslint-plugin/no-deprecated-context-methods": "error", + "eslint-plugin/no-only-tests": "error", "eslint-plugin/prefer-output-null": "error", "eslint-plugin/prefer-placeholders": "error", + "eslint-plugin/prefer-replace-text": "error", "eslint-plugin/report-message-format": ["error", "[^a-z].*\\.$"], "eslint-plugin/require-meta-docs-description": "error", + "eslint-plugin/require-meta-schema": "error", "eslint-plugin/require-meta-type": "error", "eslint-plugin/test-case-property-ordering": "error", "eslint-plugin/test-case-shorthand-strings": "error", @@ -80,6 +83,7 @@ module.exports = { files: ["lib/rules/*", "tools/internal-rules/*"], excludedFiles: ["index.js"], rules: { + "eslint-plugin/prefer-object-rule": "error", "internal-rules/no-invalid-meta": "error", "internal-rules/consistent-meta-messages": "error" } diff --git a/tests/tools/internal-rules/no-invalid-meta.js b/tests/tools/internal-rules/no-invalid-meta.js index a5ff4d55a3f..6db173a15a1 100644 --- a/tests/tools/internal-rules/no-invalid-meta.js +++ b/tests/tools/internal-rules/no-invalid-meta.js @@ -96,20 +96,6 @@ ruleTester.run("no-invalid-meta", rule, { ].join("\n") ], invalid: [ - { - code: [ - "module.exports = function(context) {", - " return {", - " Program: function(node) {}", - " };", - "};" - ].join("\n"), - errors: [{ - messageId: "incorrectExport", - line: 1, - column: 18 - }] - }, { code: [ "module.exports = {", @@ -164,30 +150,6 @@ ruleTester.run("no-invalid-meta", rule, { column: 5 }] }, - { - code: [ - "module.exports = {", - " meta: {", - " docs: {", - " category: 'Internal',", - " recommended: false", - " },", - " schema: []", - " },", - - " create: function(context) {", - " return {", - " Program: function(node) {}", - " };", - " }", - "};" - ].join("\n"), - errors: [{ - messageId: "missingMetaDocsDescription", - line: 2, - column: 5 - }] - }, { code: [ "module.exports = {", @@ -236,30 +198,6 @@ ruleTester.run("no-invalid-meta", rule, { column: 5 }] }, - { - code: [ - "module.exports = {", - " meta: {", - " docs: {", - " description: 'some rule',", - " category: 'Internal',", - " recommended: false", - " }", - " },", - - " create: function(context) {", - " return {", - " Program: function(node) {}", - " };", - " }", - "};" - ].join("\n"), - errors: [{ - messageId: "missingMetaSchema", - line: 2, - column: 5 - }] - }, { code: "", errors: [{ diff --git a/tools/internal-rules/no-invalid-meta.js b/tools/internal-rules/no-invalid-meta.js index e5a74b359b5..69b43d4c883 100644 --- a/tools/internal-rules/no-invalid-meta.js +++ b/tools/internal-rules/no-invalid-meta.js @@ -50,17 +50,6 @@ function hasMetaDocs(metaPropertyNode) { return Boolean(getPropertyFromObject("docs", metaPropertyNode.value)); } -/** - * Whether this `meta` ObjectExpression has a `docs.description` property defined or not. - * @param {ASTNode} metaPropertyNode The `meta` ObjectExpression for this rule. - * @returns {boolean} `true` if a `docs.description` property exists. - */ -function hasMetaDocsDescription(metaPropertyNode) { - const metaDocs = getPropertyFromObject("docs", metaPropertyNode.value); - - return metaDocs && getPropertyFromObject("description", metaDocs.value); -} - /** * Whether this `meta` ObjectExpression has a `docs.category` property defined or not. * @param {ASTNode} metaPropertyNode The `meta` ObjectExpression for this rule. @@ -83,15 +72,6 @@ function hasMetaDocsRecommended(metaPropertyNode) { return metaDocs && getPropertyFromObject("recommended", metaDocs.value); } -/** - * Whether this `meta` ObjectExpression has a `schema` property defined or not. - * @param {ASTNode} metaPropertyNode The `meta` ObjectExpression for this rule. - * @returns {boolean} `true` if a `schema` property exists. - */ -function hasMetaSchema(metaPropertyNode) { - return getPropertyFromObject("schema", metaPropertyNode.value); -} - /** * Checks the validity of the meta definition of this rule and reports any errors found. * @param {RuleContext} context The ESLint rule context. @@ -111,11 +91,6 @@ function checkMetaValidity(context, exportsNode) { return; } - if (!hasMetaDocsDescription(metaProperty)) { - context.report({ node: metaProperty, messageId: "missingMetaDocsDescription" }); - return; - } - if (!hasMetaDocsCategory(metaProperty)) { context.report({ node: metaProperty, messageId: "missingMetaDocsCategory" }); return; @@ -123,23 +98,9 @@ function checkMetaValidity(context, exportsNode) { if (!hasMetaDocsRecommended(metaProperty)) { context.report({ node: metaProperty, messageId: "missingMetaDocsRecommended" }); - return; - } - - if (!hasMetaSchema(metaProperty)) { - context.report({ node: metaProperty, messageId: "missingMetaSchema" }); } } -/** - * Whether this node is the correct format for a rule definition or not. - * @param {ASTNode} node node that the rule exports. - * @returns {boolean} `true` if the exported node is the correct format for a rule definition - */ -function isCorrectExportsFormat(node) { - return node.type === "ObjectExpression"; -} - //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -156,12 +117,9 @@ module.exports = { messages: { missingMeta: "Rule is missing a meta property.", missingMetaDocs: "Rule is missing a meta.docs property.", - missingMetaDocsDescription: "Rule is missing a meta.docs.description property.", missingMetaDocsCategory: "Rule is missing a meta.docs.category property.", missingMetaDocsRecommended: "Rule is missing a meta.docs.recommended property.", - missingMetaSchema: "Rule is missing a meta.schema property.", - noExport: "Rule does not export anything. Make sure rule exports an object according to new rule format.", - incorrectExport: "Rule does not export an Object. Make sure the rule follows the new rule format." + noExport: "Rule does not export anything. Make sure rule exports an object according to new rule format." } }, @@ -186,11 +144,6 @@ module.exports = { node, messageId: "noExport" }); - } else if (!isCorrectExportsFormat(exportsNode)) { - context.report({ - node: exportsNode, - messageId: "incorrectExport" - }); } else { checkMetaValidity(context, exportsNode); }