Bug 1955738 - Update mozilla/no-browser-refs-in-toolkit to account for moz-src. r=frontend-codestyle-reviewers,Gijs
Differential Revision: https://phabricator.services.mozilla.com/D245215
This commit is contained in:
@@ -11,6 +11,8 @@ Examples of incorrect code for this rule:
|
||||
.. code-block:: js
|
||||
|
||||
"chrome://browser/content/browser.xhtml"
|
||||
"moz-src:///browser/components/search/SearchUIUtils.sys.mjs"
|
||||
"moz-src://foo/browser/components/search/Foo.sys.mjs"
|
||||
"resource:///modules/BrowserWindowTracker.sys.mjs"
|
||||
"browser/browser.ftl"
|
||||
|
||||
@@ -20,5 +22,6 @@ Examples of correct code for this rule:
|
||||
.. code-block:: js
|
||||
|
||||
"chrome://global/content/aboutAbout.html"
|
||||
"moz-src:///toolkit/components/search/SearchService.sys.mjs"
|
||||
"resource://gre/modules/AppConstants.sys.mjs"
|
||||
"toolkit/global/aboutFoo.ftl"
|
||||
|
||||
@@ -34,7 +34,8 @@ module.exports = {
|
||||
node.value.startsWith("chrome://browser") ||
|
||||
node.value.startsWith("resource:///") ||
|
||||
node.value.startsWith("resource://app/") ||
|
||||
(node.value.startsWith("browser/") && node.value.endsWith(".ftl"))
|
||||
(node.value.startsWith("browser/") && node.value.endsWith(".ftl")) ||
|
||||
/moz-src:\/\/\w*\/browser\//.test(node.value)
|
||||
) {
|
||||
context.report({
|
||||
node,
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
var rule = require("../lib/rules/no-browser-refs-in-toolkit");
|
||||
var RuleTester = require("eslint").RuleTester;
|
||||
|
||||
const ruleTester = new RuleTester({
|
||||
parserOptions: { ecmaVersion: "latest", sourceType: "module" },
|
||||
});
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Tests
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
function invalidCode(code, url) {
|
||||
return {
|
||||
code,
|
||||
errors: [
|
||||
{
|
||||
messageId: "noBrowserChrome",
|
||||
data: { url },
|
||||
type: "Literal",
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
ruleTester.run("no-browser-refs-in-toolkit", rule, {
|
||||
valid: [
|
||||
'import foo from "chrome://global/content/aboutAbout.html"',
|
||||
'ChromeUtils.importESModule("resource://gre/modules/AppConstants.sys.mjs")',
|
||||
'ChromeUtils.defineESModuleGetters(null, {foo: "toolkit/global/aboutFoo.ftl"})',
|
||||
'import foo from "moz-src:///toolkit/Foo.sys.mjs"',
|
||||
'import foo from "moz-src:///toolkit/browser.js"',
|
||||
'import foo from "moz-src://bar/toolkit/browser.js"',
|
||||
],
|
||||
invalid: [
|
||||
invalidCode(
|
||||
'import foo from "chrome://browser/content/browser.xhtml"',
|
||||
"chrome://browser/content/browser.xhtml"
|
||||
),
|
||||
invalidCode(
|
||||
'ChromeUtils.importESModule("resource:///modules/BrowserWindowTracker.sys.mjs")',
|
||||
"resource:///modules/BrowserWindowTracker.sys.mjs"
|
||||
),
|
||||
invalidCode(
|
||||
'ChromeUtils.defineESModuleGetters(null, {foo: "browser/browser.ftl"})',
|
||||
"browser/browser.ftl"
|
||||
),
|
||||
invalidCode(
|
||||
'import foo from "moz-src:///browser/Foo.sys.mjs"',
|
||||
"moz-src:///browser/Foo.sys.mjs"
|
||||
),
|
||||
invalidCode(
|
||||
'import foo from "moz-src://bar/browser/Foo.sys.mjs"',
|
||||
"moz-src://bar/browser/Foo.sys.mjs"
|
||||
),
|
||||
],
|
||||
});
|
||||
Reference in New Issue
Block a user