]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-inline-comments.js
463c86eea660e448a73a0e32a23cc44bfe892c97
[pve-eslint.git] / eslint / tests / lib / rules / no-inline-comments.js
1 /**
2 * @fileoverview Test enforcement of no inline comments rule.
3 * @author Greg Cochard
4 */
5 "use strict";
6
7 //------------------------------------------------------------------------------
8 // Requirements
9 //------------------------------------------------------------------------------
10
11 const rule = require("../../../lib/rules/no-inline-comments"),
12 { RuleTester } = require("../../../lib/rule-tester");
13
14 //------------------------------------------------------------------------------
15 // Tests
16 //------------------------------------------------------------------------------
17
18 const ruleTester = new RuleTester({
19 parserOptions: {
20 ecmaFeatures: {
21 jsx: true
22 }
23 }
24 }),
25 lineError = {
26 messageId: "unexpectedInlineComment",
27 type: "Line"
28 },
29 blockError = {
30 messageId: "unexpectedInlineComment",
31 type: "Block"
32 };
33
34 ruleTester.run("no-inline-comments", rule, {
35
36 valid: [
37 "// A valid comment before code\nvar a = 1;",
38 "var a = 2;\n// A valid comment after code",
39 "// A solitary comment",
40 "var a = 1; // eslint-disable-line no-debugger",
41 "var a = 1; /* eslint-disable-line no-debugger */",
42
43 // JSX exception
44 `var a = (
45 <div>
46 {/*comment*/}
47 </div>
48 )`,
49 `var a = (
50 <div>
51 { /* comment */ }
52 <h1>Some heading</h1>
53 </div>
54 )`,
55 `var a = (
56 <div>
57 {// comment
58 }
59 </div>
60 )`,
61 `var a = (
62 <div>
63 { // comment
64 }
65 </div>
66 )`,
67 `var a = (
68 <div>
69 {/* comment 1 */
70 /* comment 2 */}
71 </div>
72 )`,
73 `var a = (
74 <div>
75 {/*
76 * comment 1
77 */
78 /*
79 * comment 2
80 */}
81 </div>
82 )`,
83 `var a = (
84 <div>
85 {/*
86 multi
87 line
88 comment
89 */}
90 </div>
91 )`,
92 {
93 code: "import(/* webpackChunkName: \"my-chunk-name\" */ './locale/en');",
94 options: [
95 {
96 ignorePattern: "(?:webpackChunkName):\\s.+"
97 }
98 ],
99 parserOptions: { ecmaVersion: 2020 }
100 },
101 {
102 code: "var foo = 2; // Note: This comment is legal.",
103 options: [
104 {
105 ignorePattern: "Note: "
106 }
107 ]
108 }
109 ],
110
111 invalid: [
112 {
113 code: "var a = 1; /*A block comment inline after code*/",
114 errors: [blockError]
115 },
116 {
117 code: "/*A block comment inline before code*/ var a = 2;",
118 errors: [blockError]
119 },
120 {
121 code: "/* something */ var a = 2;",
122 options: [
123 {
124 ignorePattern: "otherthing"
125 }
126 ],
127 errors: [blockError]
128 },
129 {
130 code: "var a = 3; //A comment inline with code",
131 errors: [lineError]
132 },
133 {
134 code: "var a = 3; // someday use eslint-disable-line here",
135 errors: [lineError]
136 },
137 {
138 code: "var a = 3; // other line comment",
139 options: [
140 {
141 ignorePattern: "something"
142 }
143 ],
144 errors: [lineError]
145 },
146 {
147 code: "var a = 4;\n/**A\n * block\n * comment\n * inline\n * between\n * code*/ var foo = a;",
148 errors: [blockError]
149 },
150 {
151 code: "var a = \n{/**/}",
152 errors: [blockError]
153 },
154
155 // JSX
156 {
157 code: `var a = (
158 <div>{/* comment */}</div>
159 )`,
160 errors: [blockError]
161 },
162 {
163 code: `var a = (
164 <div>{// comment
165 }
166 </div>
167 )`,
168 errors: [lineError]
169 },
170 {
171 code: `var a = (
172 <div>{/* comment */
173 }
174 </div>
175 )`,
176 errors: [blockError]
177 },
178 {
179 code: `var a = (
180 <div>{/*
181 * comment
182 */
183 }
184 </div>
185 )`,
186 errors: [blockError]
187 },
188 {
189 code: `var a = (
190 <div>{/*
191 * comment
192 */}
193 </div>
194 )`,
195 errors: [blockError]
196 },
197 {
198 code: `var a = (
199 <div>{/*
200 * comment
201 */}</div>
202 )`,
203 errors: [blockError]
204 },
205 {
206 code: `var a = (
207 <div>
208 {/*
209 * comment
210 */}</div>
211 )`,
212 errors: [blockError]
213 },
214 {
215 code: `var a = (
216 <div>
217 {
218 /*
219 * comment
220 */}</div>
221 )`,
222 errors: [blockError]
223 },
224 {
225 code: `var a = (
226 <div>
227 {
228 /* comment */}</div>
229 )`,
230 errors: [blockError]
231 },
232 {
233 code: `var a = (
234 <div>
235 {b/* comment */}
236 </div>
237 )`,
238 errors: [blockError]
239 },
240 {
241 code: `var a = (
242 <div>
243 {/* comment */b}
244 </div>
245 )`,
246 errors: [blockError]
247 },
248 {
249 code: `var a = (
250 <div>
251 {// comment
252 b
253 }
254 </div>
255 )`,
256 errors: [lineError]
257 },
258 {
259 code: `var a = (
260 <div>
261 {/* comment */
262 b
263 }
264 </div>
265 )`,
266 errors: [blockError]
267 },
268 {
269 code: `var a = (
270 <div>
271 {/*
272 * comment
273 */
274 b
275 }
276 </div>
277 )`,
278 errors: [blockError]
279 },
280 {
281 code: `var a = (
282 <div>
283 {
284 b// comment
285 }
286 </div>
287 )`,
288 errors: [lineError]
289 },
290 {
291 code: `var a = (
292 <div>
293 {
294 /* comment */b
295 }
296 </div>
297 )`,
298 errors: [blockError]
299 },
300 {
301 code: `var a = (
302 <div>
303 {
304 b/* comment */
305 }
306 </div>
307 )`,
308 errors: [blockError]
309 },
310 {
311 code: `var a = (
312 <div>
313 {
314 b
315 /*
316 * comment
317 */}
318 </div>
319 )`,
320 errors: [blockError]
321 },
322 {
323 code: `var a = (
324 <div>
325 {
326 b
327 /* comment */}
328 </div>
329 )`,
330 errors: [blockError]
331 },
332 {
333 code: `var a = (
334 <div>
335 {
336 { /* this is an empty object literal, not braces for js code! */ }
337 }
338 </div>
339 )`,
340 errors: [blockError]
341 },
342 {
343 code: `var a = (
344 <div>
345 {
346 {// comment
347 }
348 }
349 </div>
350 )`,
351 errors: [lineError]
352 },
353 {
354 code: `var a = (
355 <div>
356 {
357 {
358 /* comment */}
359 }
360 </div>
361 )`,
362 errors: [blockError]
363 },
364 {
365 code: `var a = (
366 <div>
367 { /* two comments on the same line... */ /* ...are not allowed, same as with a non-JSX code */}
368 </div>
369 )`,
370 errors: [blockError, blockError]
371 },
372 {
373 code: `var a = (
374 <div>
375 {
376 /* overlapping
377 */ /*
378 lines */
379 }
380 </div>
381 )`,
382 errors: [blockError, blockError]
383 }
384 ]
385 });