@@ -6,6 +6,7 @@ testRule({
6
6
ruleName,
7
7
config : [ 'always' ] ,
8
8
skipBasicChecks : true ,
9
+ fix : true ,
9
10
10
11
accept : [
11
12
{
@@ -54,51 +55,87 @@ testRule({
54
55
code : 'html { --custom-property-set: {} }' ,
55
56
description : 'custom property set in selector' ,
56
57
} ,
58
+ {
59
+ code : `a[href="te's't"] { }` ,
60
+ description : 'double-quoted attribute contains single quote' ,
61
+ } ,
62
+ {
63
+ code : `a[href='te"s"t'] { }` ,
64
+ description : 'single-quoted attribute contains double quote' ,
65
+ } ,
57
66
] ,
58
67
59
68
reject : [
60
69
{
61
70
code : 'a[title=flower] { }' ,
71
+ fixed : 'a[title="flower"] { }' ,
62
72
message : messages . expected ( 'flower' ) ,
63
73
line : 1 ,
64
74
column : 9 ,
65
75
} ,
66
76
{
67
77
code : 'a[ title=flower ] { }' ,
78
+ fixed : 'a[ title="flower" ] { }' ,
68
79
message : messages . expected ( 'flower' ) ,
69
80
line : 1 ,
70
81
column : 10 ,
71
82
} ,
72
83
{
73
84
code : '[class^=top] { }' ,
85
+ fixed : '[class^="top"] { }' ,
74
86
message : messages . expected ( 'top' ) ,
75
87
line : 1 ,
76
88
column : 9 ,
77
89
} ,
78
90
{
79
91
code : '[class ^= top] { }' ,
92
+ fixed : '[class ^= "top"] { }' ,
80
93
message : messages . expected ( 'top' ) ,
81
94
line : 1 ,
82
95
column : 11 ,
83
96
} ,
84
97
{
85
98
code : '[frame=hsides i] { }' ,
99
+ fixed : '[frame="hsides" i] { }' ,
86
100
message : messages . expected ( 'hsides' ) ,
87
101
line : 1 ,
88
102
column : 8 ,
89
103
} ,
90
104
{
91
105
code : '[data-style=value][data-loading] { }' ,
106
+ fixed : '[data-style="value"][data-loading] { }' ,
92
107
message : messages . expected ( 'value' ) ,
93
108
line : 1 ,
94
109
column : 13 ,
95
110
} ,
111
+ {
112
+ code : `[href=te\\'s\\"t] { }` ,
113
+ fixed : `[href="te's\\"t"] { }` ,
114
+ message : messages . expected ( `te's"t` ) ,
115
+ line : 1 ,
116
+ column : 7 ,
117
+ } ,
118
+ {
119
+ code : '[href=\\"test\\"] { }' ,
120
+ fixed : '[href="\\"test\\""] { }' ,
121
+ message : messages . expected ( '"test"' ) ,
122
+ line : 1 ,
123
+ column : 7 ,
124
+ } ,
125
+ {
126
+ code : "[href=\\'test\\'] { }" ,
127
+ fixed : `[href="'test'"] { }` ,
128
+ message : messages . expected ( "'test'" ) ,
129
+ line : 1 ,
130
+ column : 7 ,
131
+ } ,
96
132
] ,
97
133
} ) ;
98
134
99
135
testRule ( {
100
136
ruleName,
101
137
config : [ 'never' ] ,
138
+ fix : true ,
102
139
103
140
accept : [
104
141
{
@@ -116,63 +153,119 @@ testRule({
116
153
{
117
154
code : '[data-style=value][data-loading] { }' ,
118
155
} ,
156
+ {
157
+ code : `a[href=te\\'s\\"t] { }` ,
158
+ description : 'attribute contains inner quotes' ,
159
+ } ,
160
+ {
161
+ code : '[href=\\"test\\"] { }' ,
162
+ description : 'escaped double-quotes are not considered as framing quotes' ,
163
+ } ,
164
+ {
165
+ code : "[href=\\'test\\'] { }" ,
166
+ description : 'escaped single-quotes are not considered as framing quotes' ,
167
+ } ,
119
168
] ,
120
169
121
170
reject : [
122
171
{
123
172
code : 'a[target="_blank"] { }' ,
173
+ fixed : 'a[target=_blank] { }' ,
124
174
message : messages . rejected ( '_blank' ) ,
125
175
line : 1 ,
126
176
column : 10 ,
127
177
} ,
128
178
{
129
179
code : 'a[ target="_blank" ] { }' ,
180
+ fixed : 'a[ target=_blank ] { }' ,
130
181
message : messages . rejected ( '_blank' ) ,
131
182
line : 1 ,
132
183
column : 11 ,
133
184
} ,
134
185
{
135
186
code : '[class|="top"] { }' ,
187
+ fixed : '[class|=top] { }' ,
136
188
message : messages . rejected ( 'top' ) ,
137
189
line : 1 ,
138
190
column : 9 ,
139
191
} ,
140
192
{
141
193
code : '[class |= "top"] { }' ,
194
+ fixed : '[class |= top] { }' ,
142
195
message : messages . rejected ( 'top' ) ,
143
196
line : 1 ,
144
197
column : 11 ,
145
198
} ,
146
199
{
147
200
code : "[title~='text'] { }" ,
201
+ fixed : '[title~=text] { }' ,
148
202
message : messages . rejected ( 'text' ) ,
149
203
line : 1 ,
150
204
column : 9 ,
151
205
} ,
152
206
{
153
207
code : "[data-attribute='component'] { }" ,
208
+ fixed : '[data-attribute=component] { }' ,
154
209
message : messages . rejected ( 'component' ) ,
155
210
line : 1 ,
156
211
column : 17 ,
157
212
} ,
158
213
{
159
214
code : '[frame="hsides" i] { }' ,
215
+ fixed : '[frame=hsides i] { }' ,
160
216
message : messages . rejected ( 'hsides' ) ,
161
217
line : 1 ,
162
218
column : 8 ,
163
219
} ,
164
220
{
165
221
code : "[frame='hsides' i] { }" ,
222
+ fixed : '[frame=hsides i] { }' ,
166
223
message : messages . rejected ( 'hsides' ) ,
167
224
line : 1 ,
168
225
column : 8 ,
169
226
} ,
170
227
{
171
228
code : "[data-style='value'][data-loading] { }" ,
229
+ fixed : '[data-style=value][data-loading] { }' ,
172
230
message : messages . rejected ( 'value' ) ,
173
231
line : 1 ,
174
232
column : 13 ,
175
233
} ,
234
+ {
235
+ code : `[href="te'st"] { }` ,
236
+ fixed : "[href=te\\'st] { }" ,
237
+ message : messages . rejected ( "te'st" ) ,
238
+ line : 1 ,
239
+ column : 7 ,
240
+ } ,
241
+ {
242
+ code : `[href='te"st'] { }` ,
243
+ fixed : '[href=te\\"st] { }' ,
244
+ message : messages . rejected ( 'te"st' ) ,
245
+ line : 1 ,
246
+ column : 7 ,
247
+ } ,
248
+ {
249
+ code : "[href='te\\'s\\'t'] { }" ,
250
+ fixed : "[href=te\\'s\\'t] { }" ,
251
+ message : messages . rejected ( "te's't" ) ,
252
+ line : 1 ,
253
+ column : 7 ,
254
+ } ,
255
+ {
256
+ code : '[href="te\\"s\\"t"] { }' ,
257
+ fixed : '[href=te\\"s\\"t] { }' ,
258
+ message : messages . rejected ( 'te"s"t' ) ,
259
+ line : 1 ,
260
+ column : 7 ,
261
+ } ,
262
+ {
263
+ code : 'a[target="_blank"], /* comment */ a { }' ,
264
+ fixed : 'a[target=_blank], /* comment */ a { }' ,
265
+ message : messages . rejected ( '_blank' ) ,
266
+ line : 1 ,
267
+ column : 10 ,
268
+ } ,
176
269
] ,
177
270
} ) ;
178
271
0 commit comments