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