-
-
Notifications
You must be signed in to change notification settings - Fork 929
/
needlessDisables.test.js
110 lines (100 loc) · 2.71 KB
/
needlessDisables.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
"use strict";
const needlessDisables = require("../needlessDisables");
const path = require("path");
const standalone = require("../standalone");
const stripIndent = require("common-tags").stripIndent;
function fixture(name) {
return path.join(__dirname, "./fixtures/needlessDisables", name);
}
it("needlessDisables simple case", () => {
const config = {
rules: { "block-no-empty": true }
};
const css = stripIndent`
/* stylelint-disable */
a {}
/* stylelint-enable */
a {
b {} /* stylelint-disable-line block-no-empty */
}
/* stylelint-disable */
a { color: pink; }
/* stylelint-enable */
a {
b { color: pink; } /* stylelint-disable-line block-no-empty */
}
`;
return standalone({
config,
code: css,
ignoreDisables: true
}).then(linted => {
const report = needlessDisables(linted.results);
expect(report).toHaveLength(1);
expect(report[0].ranges).toEqual([
{ start: 7, end: 9, unusedRule: "all" },
{ start: 11, end: 11, unusedRule: "block-no-empty" }
]);
});
});
it("needlessDisables complex case", () => {
const config = {
rules: {
"block-no-empty": true,
"color-named": "never"
}
};
return standalone({
config,
files: [
fixture("disabled-ranges-1.css"),
fixture("disabled-ranges-2.css"),
// ignore files contain `CssSyntaxError`
fixture("disabled-ranges-3.css")
],
ignoreDisables: true
}).then(linted => {
expect(needlessDisables(linted.results)).toEqual([
{
source: fixture("disabled-ranges-1.css"),
ranges: [
{ start: 1, end: 3, unusedRule: "color-named" },
{ start: 5, end: 7, unusedRule: "block-no-empty" },
{ start: 10, end: 10, unusedRule: "block-no-empty" }
]
},
{
source: fixture("disabled-ranges-2.css"),
ranges: [
{ start: 5, end: 5, unusedRule: "color-named" },
{ start: 6, end: 6, unusedRule: "block-no-empty" },
{ start: 8, unusedRule: "block-no-empty" }
]
}
]);
});
});
it("needlessDisables ignored case", () => {
const config = {
rules: {
"block-no-empty": true
}
};
return standalone({
config,
files: [fixture("disabled-ranges-1.css"), fixture("ignored-file.css")],
ignoreDisables: true,
ignorePath: fixture(".stylelintignore")
}).then(linted => {
expect(needlessDisables(linted.results)).toEqual([
{
source: fixture("disabled-ranges-1.css"),
ranges: [
{ start: 1, end: 3, unusedRule: "color-named" },
{ start: 5, end: 7, unusedRule: "block-no-empty" },
{ start: 10, end: 10, unusedRule: "all" }
]
}
]);
});
});