Bug 1463673 - Member expressions should also be allowed as expected arguments to Assert.throws/rejects. r?Mossop draft
authorMark Banner <standard8@mozilla.com>
Wed, 23 May 2018 08:58:19 +0100
changeset 798665 aad3b489e76cdf5be22663b06f835a26efbee35b
parent 798664 a32898161ec492f0e5fbb858c93edc6dab52dfb9
child 798666 21e6db29328eff1a31bc7495bb7c6dd708fdc42d
push id110817
push userbmo:standard8@mozilla.com
push dateWed, 23 May 2018 08:54:57 +0000
reviewersMossop
bugs1463673
milestone62.0a1
Bug 1463673 - Member expressions should also be allowed as expected arguments to Assert.throws/rejects. r?Mossop MozReview-Commit-ID: Jhs3TD60bli
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/rules/require-expected-throws-or-rejects.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/rules/require-expected-throws-or-rejects.js
@@ -18,16 +18,17 @@ function checkArgs(context, node, 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
       }
--- a/tools/lint/eslint/eslint-plugin-mozilla/tests/require-expected-throws-or-rejects.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/tests/require-expected-throws-or-rejects.js
@@ -24,17 +24,18 @@ ruleTester.run("no-useless-run-test", ru
   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, 'msg')",
+    "Assert.rejects(foo, foo.bar, 'msg')"
   ],
   invalid: [
     invalidCode("Assert.throws(() => foo());",
                 "needsTwoArguments", "throws"),
 
     invalidCode("Assert.throws(() => foo(), 'message');",
                 "requireExpected", "throws"),