-
-
Notifications
You must be signed in to change notification settings - Fork 929
/
index.js
139 lines (132 loc) · 3.42 KB
/
index.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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
"use strict";
const rule = require("..");
const { messages, ruleName } = rule;
testRule(rule, {
ruleName,
config: [
{
"min-width": ["768px", "$sm"],
"/resolution/": ["/dpcm$/"], // Only dpcm unit
color: [], // Test boolean context
width: [] // Test range context
}
],
accept: [
{
code: "@media screen and (min-width: 768px) {}",
description: "Specified media feature"
},
{
code: "@media screen and ( min-width : 768px ) {}",
description: "Whitespace"
},
{
code: "@media screen and (max-width: 1000px) {}",
description: "Unspecified media feature"
},
{
code: "@media screen and ( min-resolution : 2dpcm ) {}",
description: "Regex feature name and Regex value"
},
{
code: "@media screen and (resolution: 10.1dpcm) {}",
description: "Floating point value"
},
{
code: "@media screen and (min-width: $sm) {}",
description: "Non-standard syntax in whitelist"
},
{
code: "@media (color) {}",
description: "Boolean context, media feature in whitelist"
},
{
code: "@media (update) {}",
description: "Boolean context, media feature NOT in whitelist"
},
{
code: "@media (update /* pw:ned */) {}",
description: "Boolean context with colon in comments"
},
{
code: "@media screen and (width <= 768px) {}",
description: "Range context, media feature in whitelist"
},
{
code: "@media screen and (height <= 768px) {}",
description: "Range context, media feature NOT in whitelist"
}
],
reject: [
{
code: "@media screen and (min-width: 1000px) {}",
message: messages.rejected("min-width", "1000px"),
line: 1,
column: 31
},
{
code: "@media screen (min-width: 768px) and (min-width: 1000px) {}",
description: "Media feature multiple",
message: messages.rejected("min-width", "1000px"),
line: 1,
column: 50
},
{
code: "@media screen (min-width: 768px)\nand (min-width: 1000px) {}",
description: "Media feature multiline",
message: messages.rejected("min-width", "1000px"),
line: 2,
column: 17
},
{
code: "@media screen and (min-width: 768PX) {}",
description: "Case sensitive",
message: messages.rejected("min-width", "768PX"),
line: 1,
column: 31
},
{
code: "@media screen and (min-width: $md) {}",
description: "Non-standard syntax NOT in whitelist",
message: messages.rejected("min-width", "$md"),
line: 1,
column: 31
},
{
code: "@media screen and (min-resolution: 2dpi) {}",
message: messages.rejected("min-resolution", "2dpi"),
line: 1,
column: 37
}
]
});
testRule(rule, {
ruleName,
config: [
{
"/resolution/": [/dpcm$/] // Only dpcm unit
}
],
accept: [
{
code: "@media screen and (min-width: 768px) {}",
description: "Specified media feature"
},
{
code: "@media screen and ( min-resolution : 2dpcm ) {}",
description: "Regex feature name and Regex value"
},
{
code: "@media screen and (resolution: 10.1dpcm) {}",
description: "Floating point value"
}
],
reject: [
{
code: "@media screen and (min-resolution: 2dpi) {}",
message: messages.rejected("min-resolution", "2dpi"),
line: 1,
column: 37
}
]
});