Bug 1452706 - Remove the now redundant ESLint rule require-expected-throws-or-rejects. r?mikedeboer draft
authorMark Banner <standard8@mozilla.com>
Tue, 03 Jul 2018 20:22:01 +0100
changeset 814486 e811bc432f7bf51c6f990593e1ccbd67b1ffb725
parent 814485 59e979897e9cc2aa262a9112aac7debf91596fac
child 814487 621f186b774f925126e9198b5dd6b6e518eb1ea1
push id115229
push userbmo:standard8@mozilla.com
push dateThu, 05 Jul 2018 13:40:07 +0000
reviewersmikedeboer
bugs1452706
milestone63.0a1
Bug 1452706 - Remove the now redundant ESLint rule require-expected-throws-or-rejects. r?mikedeboer MozReview-Commit-ID: 7CXrVV6x5I6
tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
tools/lint/eslint/eslint-plugin-mozilla/lib/index.js
tools/lint/eslint/eslint-plugin-mozilla/lib/rules/require-expected-throws-or-rejects.js
tools/lint/eslint/eslint-plugin-mozilla/tests/require-expected-throws-or-rejects.js
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
@@ -175,17 +175,16 @@ module.exports = {
     "mozilla/import-browser-window-globals": "error",
     "mozilla/import-globals": "error",
     "mozilla/no-compare-against-boolean-literals": "error",
     "mozilla/no-define-cc-etc": "error",
     "mozilla/no-import-into-var-and-global": "error",
     "mozilla/no-useless-parameters": "error",
     "mozilla/no-useless-removeEventListener": "error",
     "mozilla/rejects-requires-await": "error",
-    "mozilla/require-expected-throws-or-rejects": "error",
     "mozilla/use-cc-etc": "error",
     "mozilla/use-chromeutils-generateqi": "error",
     "mozilla/use-chromeutils-import": "error",
     "mozilla/use-default-preference-values": "error",
     "mozilla/use-includes-instead-of-indexOf": "error",
     "mozilla/use-ownerGlobal": "error",
     "mozilla/use-services": "error",
 
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/index.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/index.js
@@ -49,18 +49,16 @@ module.exports = {
     "no-import-into-var-and-global":
       require("../lib/rules/no-import-into-var-and-global.js"),
     "no-task": require("../lib/rules/no-task"),
     "no-useless-parameters": require("../lib/rules/no-useless-parameters"),
     "no-useless-removeEventListener":
       require("../lib/rules/no-useless-removeEventListener"),
     "no-useless-run-test":
       require("../lib/rules/no-useless-run-test"),
-    "require-expected-throws-or-rejects":
-      require("../lib/rules/require-expected-throws-or-rejects"),
     "reject-importGlobalProperties":
       require("../lib/rules/reject-importGlobalProperties"),
     "reject-some-requires": require("../lib/rules/reject-some-requires"),
     "rejects-requires-await": require("../lib/rules/rejects-requires-await"),
     "use-cc-etc": require("../lib/rules/use-cc-etc"),
     "use-chromeutils-generateqi": require("../lib/rules/use-chromeutils-generateqi"),
     "use-chromeutils-import": require("../lib/rules/use-chromeutils-import"),
     "use-default-preference-values":
deleted file mode 100644
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/rules/require-expected-throws-or-rejects.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * @fileoverview Reject use of Cu.importGlobalProperties
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-"use strict";
-
-function checkArgs(context, node, name) {
-  if (node.arguments.length < 2) {
-    context.report({
-      node,
-      messageId: "needsTwoArguments",
-      data: {
-        name
-      }
-    });
-    return;
-  }
-
-  if (!("regex" in node.arguments[1]) &&
-      node.arguments[1].type !== "FunctionExpression" &&
-      node.arguments[1].type !== "ArrowFunctionExpression" &&
-      node.arguments[1].type !== "MemberExpression" &&
-      (node.arguments[1].type !== "Identifier" ||
-       node.arguments[1].name === "undefined")) {
-    context.report({
-      node,
-      messageId: "requireExpected",
-      data: {
-        name
-      }
-    });
-  }
-}
-
-module.exports = {
-  meta: {
-    messages: {
-      needsTwoArguments: "Assert.{{name}} should have at least two arguments (assert, expected).",
-      requireExpected: "Second argument to Assert.{{name}} should be a RegExp, function or object to compare the exception to."
-    }
-  },
-
-  create(context) {
-    return {
-      "CallExpression": function(node) {
-        if (node.callee.type === "MemberExpression") {
-          let memexp = node.callee;
-          if (memexp.object.type === "Identifier" &&
-              memexp.object.name === "Assert" &&
-              memexp.property.type === "Identifier" &&
-              memexp.property.name === "rejects") {
-            // We have ourselves an Assert.rejects.
-            checkArgs(context, node, "rejects");
-          }
-
-          if (memexp.object.type === "Identifier" &&
-              memexp.object.name === "Assert" &&
-              memexp.property.type === "Identifier" &&
-              memexp.property.name === "throws") {
-            // We have ourselves an Assert.throws.
-            checkArgs(context, node, "throws");
-          }
-        }
-      }
-    };
-  }
-};
deleted file mode 100644
--- a/tools/lint/eslint/eslint-plugin-mozilla/tests/require-expected-throws-or-rejects.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// ------------------------------------------------------------------------------
-// Requirements
-// ------------------------------------------------------------------------------
-
-var rule = require("../lib/rules/require-expected-throws-or-rejects");
-var RuleTester = require("eslint/lib/testers/rule-tester");
-
-const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
-
-// ------------------------------------------------------------------------------
-// Tests
-// ------------------------------------------------------------------------------
-
-function invalidCode(code, messageId, name) {
-  return {code, errors: [{messageId, data: {name}}]};
-}
-
-ruleTester.run("no-useless-run-test", rule, {
-  valid: [
-    "Assert.throws(() => foo(), /assertion/);",
-    "Assert.throws(() => foo(), /assertion/, 'message');",
-    "Assert.throws(() => foo(), ex => {}, 'message');",
-    "Assert.throws(() => foo(), foo, 'message');",
-    "Assert.rejects(foo, /assertion/)",
-    "Assert.rejects(foo, /assertion/, 'msg')",
-    "Assert.rejects(foo, ex => {}, 'msg')",
-    "Assert.rejects(foo, foo, 'msg')",
-    "Assert.rejects(foo, foo.bar, 'msg')"
-  ],
-  invalid: [
-    invalidCode("Assert.throws(() => foo());",
-                "needsTwoArguments", "throws"),
-
-    invalidCode("Assert.throws(() => foo(), 'message');",
-                "requireExpected", "throws"),
-
-    invalidCode("Assert.throws(() => foo(), 'invalid', 'message');",
-                "requireExpected", "throws"),
-
-    invalidCode("Assert.throws(() => foo(), null, 'message');",
-                "requireExpected", "throws"),
-
-    invalidCode("Assert.throws(() => foo(), undefined, 'message');",
-                "requireExpected", "throws"),
-
-    invalidCode("Assert.rejects(foo)",
-                "needsTwoArguments", "rejects"),
-
-    invalidCode("Assert.rejects(foo, 'msg')",
-                "requireExpected", "rejects"),
-
-    invalidCode("Assert.rejects(foo, 'invalid', 'msg')",
-                "requireExpected", "rejects"),
-
-    invalidCode("Assert.rejects(foo, undefined, 'msg')",
-                "requireExpected", "rejects")
-  ]
-});