Source code
Revision control
Copy as Markdown
Other Tools
/* Any copyright is dedicated to the Public Domain.
import rule from "../lib/rules/no-newtab-refs-outside-newtab.mjs";
import { RuleTester } from "eslint";
const ruleTester = new RuleTester();
function invalidCode(code, url) {
return {
code,
errors: [
{
messageId: "noNewtabRefs",
data: { url },
type: "Literal",
},
],
};
}
function validCodeInAllowedPath(code, filename) {
return {
code,
filename,
};
}
ruleTester.run("no-newtab-refs-outside-newtab", rule, {
valid: [
// Valid: Usage within browser/extensions/newtab/
validCodeInAllowedPath(
"/path/to/browser/extensions/newtab/lib/SomeFile.sys.mjs"
),
validCodeInAllowedPath(
"/path/to/browser/extensions/newtab/test/unit/test_something.js"
),
validCodeInAllowedPath(
"/path/to/browser/extensions/newtab/lib/Feed.sys.mjs"
),
// Valid: Usage within browser/components/newtab/
validCodeInAllowedPath(
"/path/to/browser/components/newtab/AboutNewTabResourceMapping.sys.mjs"
),
validCodeInAllowedPath(
'ChromeUtils.defineESModuleGetters(lazy, {"ActivityStream": "resource://newtab/lib/ActivityStream.sys.mjs"})',
"/path/to/browser/components/newtab/SomeComponent.sys.mjs"
),
// Valid: Usage in AboutNewTab.sys.mjs
validCodeInAllowedPath(
"/path/to/browser/modules/AboutNewTab.sys.mjs"
),
// Valid: Usage in AboutNewTabChild.sys.mjs
validCodeInAllowedPath(
"/path/to/browser/actors/AboutNewTabChild.sys.mjs"
),
// Valid: Other chrome/resource URIs that don't match newtab
'import foo from "chrome://global/content/aboutAbout.html"',
'ChromeUtils.importESModule("resource://gre/modules/AppConstants.sys.mjs")',
'Services.wm.getMostRecentWindow("chrome://browser/content/browser.xhtml")',
],
invalid: [
invalidCode(
),
invalidCode(
),
invalidCode(
),
invalidCode(
),
invalidCode(
'ChromeUtils.defineESModuleGetters(lazy, {"TopSitesFeed": "resource://newtab/lib/TopSitesFeed.sys.mjs"})',
),
invalidCode(
),
],
});