summaryrefslogtreecommitdiffstats
path: root/tools/lint/eslint/eslint-plugin-mozilla/tests/no-comparison-or-assignment-inside-ok.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lint/eslint/eslint-plugin-mozilla/tests/no-comparison-or-assignment-inside-ok.js')
-rw-r--r--tools/lint/eslint/eslint-plugin-mozilla/tests/no-comparison-or-assignment-inside-ok.js139
1 files changed, 139 insertions, 0 deletions
diff --git a/tools/lint/eslint/eslint-plugin-mozilla/tests/no-comparison-or-assignment-inside-ok.js b/tools/lint/eslint/eslint-plugin-mozilla/tests/no-comparison-or-assignment-inside-ok.js
new file mode 100644
index 0000000000..3c43e5879f
--- /dev/null
+++ b/tools/lint/eslint/eslint-plugin-mozilla/tests/no-comparison-or-assignment-inside-ok.js
@@ -0,0 +1,139 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// ------------------------------------------------------------------------------
+// Requirements
+// ------------------------------------------------------------------------------
+
+var rule = require("../lib/rules/no-comparison-or-assignment-inside-ok");
+var RuleTester = require("eslint").RuleTester;
+
+const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: "latest" } });
+
+// ------------------------------------------------------------------------------
+// Tests
+// ------------------------------------------------------------------------------
+
+function invalidCode(code, output, messageId, options = []) {
+ let rv = {
+ code,
+ errors: [{ messageId }],
+ };
+ if (output) {
+ rv.output = output;
+ }
+ return rv;
+}
+
+ruleTester.run("no-comparison-or-assignment-inside-ok", rule, {
+ valid: [
+ "ok(foo)",
+ "ok(!bar)",
+ "ok(!foo, 'Message')",
+ "ok(bar, 'Message')",
+ "ok(!!foo, 'Message')",
+ ],
+ invalid: [
+ // Assignment
+ invalidCode("ok(foo = bar)", null, "assignment"),
+ invalidCode("ok(foo = bar, 'msg')", null, "assignment"),
+
+ // Comparisons:
+ invalidCode("ok(foo == bar)", "Assert.equal(foo, bar)", "comparison", {
+ operator: "==",
+ }),
+ invalidCode("ok(foo != bar)", "Assert.notEqual(foo, bar)", "comparison", {
+ operator: "!=",
+ }),
+ invalidCode("ok(foo < bar)", "Assert.less(foo, bar)", "comparison", {
+ operator: "<",
+ }),
+ invalidCode("ok(foo > bar)", "Assert.greater(foo, bar)", "comparison", {
+ operator: ">",
+ }),
+ invalidCode(
+ "ok(foo <= bar)",
+ "Assert.lessOrEqual(foo, bar)",
+ "comparison",
+ { operator: "<=" }
+ ),
+ invalidCode(
+ "ok(foo >= bar)",
+ "Assert.greaterOrEqual(foo, bar)",
+ "comparison",
+ { operator: ">=" }
+ ),
+ invalidCode(
+ "ok(foo === bar)",
+ "Assert.strictEqual(foo, bar)",
+ "comparison",
+ { operator: "===" }
+ ),
+ invalidCode(
+ "ok(foo !== bar)",
+ "Assert.notStrictEqual(foo, bar)",
+ "comparison",
+ { operator: "!==" }
+ ),
+
+ // Comparisons with messages:
+ invalidCode(
+ "ok(foo == bar, 'hi')",
+ "Assert.equal(foo, bar, 'hi')",
+ "comparison",
+ { operator: "==" }
+ ),
+ invalidCode(
+ "ok(foo != bar, 'hi')",
+ "Assert.notEqual(foo, bar, 'hi')",
+ "comparison",
+ { operator: "!=" }
+ ),
+ invalidCode(
+ "ok(foo < bar, 'hi')",
+ "Assert.less(foo, bar, 'hi')",
+ "comparison",
+ { operator: "<" }
+ ),
+ invalidCode(
+ "ok(foo > bar, 'hi')",
+ "Assert.greater(foo, bar, 'hi')",
+ "comparison",
+ { operator: ">" }
+ ),
+ invalidCode(
+ "ok(foo <= bar, 'hi')",
+ "Assert.lessOrEqual(foo, bar, 'hi')",
+ "comparison",
+ { operator: "<=" }
+ ),
+ invalidCode(
+ "ok(foo >= bar, 'hi')",
+ "Assert.greaterOrEqual(foo, bar, 'hi')",
+ "comparison",
+ { operator: ">=" }
+ ),
+ invalidCode(
+ "ok(foo === bar, 'hi')",
+ "Assert.strictEqual(foo, bar, 'hi')",
+ "comparison",
+ { operator: "===" }
+ ),
+ invalidCode(
+ "ok(foo !== bar, 'hi')",
+ "Assert.notStrictEqual(foo, bar, 'hi')",
+ "comparison",
+ { operator: "!==" }
+ ),
+
+ // Confusing bits that break fixup:
+ invalidCode(
+ "async () => ok((await foo) === bar, 'Oh no')",
+ "async () => Assert.strictEqual(await foo, bar, 'Oh no')",
+ "comparison",
+ { operator: "===" }
+ ),
+ ],
+});