Source code
Revision control
Copy as Markdown
Other Tools
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
*/
// supports exports in package.json files
// eslint-disable-next-line import/no-unresolved
import { testRule } from "stylelint-test-rule-node";
import stylelint from "stylelint";
import noBrowserRefsInToolkit from "../rules/no-browser-refs-in-toolkit.mjs";
let plugin = stylelint.createPlugin(
noBrowserRefsInToolkit.ruleName,
noBrowserRefsInToolkit
);
let {
ruleName,
rule: { messages },
} = plugin;
testRule({
plugins: [plugin],
ruleName,
config: [true],
fix: false,
accept: [
// @import statements
{
code: '@import "chrome://global/skin/global.css";',
},
{
code: '@import url("chrome://global/skin/global.css");',
},
{
code: '@import "close-icon.css";',
description: "Using relative path is valid.",
},
{
code: '@import url("close-icon.css");',
description: "Using relative path with url function is valid.",
},
{
description: "Using non-app resource is valid.",
},
{
description: "Using non-app resource with url function is valid.",
},
// property values
{
code: 'a { background: url("chrome://global/skin/global.css"); }',
},
{
code: 'a { background: url("close-icon.svg"); }',
description: "Using relative path in property value is valid.",
},
],
reject: [
// @import statements
{
code: '@import "chrome://browser/skin/browser-colors.css";',
message: messages.rejected("chrome://browser/skin/browser-colors.css"),
},
{
code: '@import url("chrome://browser/skin/browser-colors.css");',
message: messages.rejected("chrome://browser/skin/browser-colors.css"),
description:
},
{
},
{
description:
},
{
},
{
description:
},
{
code: '@import "moz-src:///browser/testfile.css";',
message: messages.rejected("moz-src:///browser/testfile.css"),
description: "Using moz-src browser path should be flagged.",
},
{
code: '@import url("moz-src:///browser/testfile.css");',
message: messages.rejected("moz-src:///browser/testfile.css"),
description:
"Using moz-src browser path with url function should be flagged.",
},
{
code: "background: url(chrome://browser/skin/notification-fill-12.svg) no-repeat center;",
message: messages.rejected(
"chrome://browser/skin/notification-fill-12.svg"
),
description:
},
// property values
{
code: 'a { background: url("chrome://browser/skin/browser-colors.css"); }',
message: messages.rejected("chrome://browser/skin/browser-colors.css"),
description:
},
{
code: "a { background: url(moz-src:///browser/testfile.svg); }",
message: messages.rejected("moz-src:///browser/testfile.svg"),
description:
"Using moz-src browser path in property value should be flagged.",
},
{
code: 'a { background: url("moz-src:///browser/testfile.svg"); }',
message: messages.rejected("moz-src:///browser/testfile.svg"),
description:
"Using moz-src browser path with quotes in property value should be flagged.",
},
{
description:
"Using moz-src browser path in property value should be flagged.",
},
],
});