Bug 1246896 - Add some basic tests for ESLint rule mozilla/no-cpows-in-tests.js. r?florian draft
authorMark Banner <standard8@mozilla.com>
Fri, 13 Oct 2017 16:10:36 +0100
changeset 687687 5c5b2eb6e2c7209b4a2ece939198e599fb6d1249
parent 687532 ecef003d836730c07ecfcfa25df8e71a88aec99f
child 687688 6c536a0f67a5b1393d117ec6f595d233e8aa7ad0
push id86565
push userbmo:standard8@mozilla.com
push dateFri, 27 Oct 2017 15:48:54 +0000
reviewersflorian
bugs1246896
milestone58.0a1
Bug 1246896 - Add some basic tests for ESLint rule mozilla/no-cpows-in-tests.js. r?florian MozReview-Commit-ID: 2tZS1GYUUbH
tools/lint/eslint/eslint-plugin-mozilla/tests/no-cpows-in-tests.js
new file mode 100644
--- /dev/null
+++ b/tools/lint/eslint/eslint-plugin-mozilla/tests/no-cpows-in-tests.js
@@ -0,0 +1,42 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// ------------------------------------------------------------------------------
+// Requirements
+// ------------------------------------------------------------------------------
+
+var rule = require("../lib/rules/no-cpows-in-tests");
+var RuleTester = require("eslint/lib/testers/rule-tester");
+
+const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
+
+// ------------------------------------------------------------------------------
+// Tests
+// ------------------------------------------------------------------------------
+
+function wrapCode(code, filename = "browser_fake.js") {
+  return {code, filename};
+}
+
+function invalidCode(code, item) {
+  let message = `${item} is a possible Cross Process Object Wrapper (CPOW).`;
+  let obj = wrapCode(code);
+  obj.errors = [{message, type: "MemberExpression"}];
+  return obj;
+}
+
+ruleTester.run("no-cpows-in-tests", rule, {
+  valid: [
+    "window.document",
+    wrapCode("ContentTask.spawn(browser, null, () => { content.document; });")
+  ],
+  invalid: [
+    invalidCode("let x = gBrowser.contentWindow;", "gBrowser.contentWindow"),
+    invalidCode("let x = gBrowser.contentDocument;", "gBrowser.contentDocument"),
+    invalidCode("let x = gBrowser.selectedBrowser.contentWindow;", "gBrowser.selectedBrowser.contentWindow"),
+    invalidCode("let x = browser.contentDocument;", "browser.contentDocument"),
+    invalidCode("let x = window.content;", "window.content")
+  ]
+});