]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-inline-comments.js
first commit
[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
94 invalid: [
95 {
96 code: "var a = 1; /*A block comment inline after code*/",
97 errors: [blockError]
98 },
99 {
100 code: "/*A block comment inline before code*/ var a = 2;",
101 errors: [blockError]
102 },
103 {
104 code: "var a = 3; //A comment inline with code",
105 errors: [lineError]
106 },
107 {
108 code: "var a = 3; // someday use eslint-disable-line here",
109 errors: [lineError]
110 },
111 {
112 code: "var a = 4;\n/**A\n * block\n * comment\n * inline\n * between\n * code*/ var foo = a;",
113 errors: [blockError]
114 },
115 {
116 code: "var a = \n{/**/}",
117 errors: [blockError]
118 },
119
120 // JSX
121 {
122 code: `var a = (
123 <div>{/* comment */}</div>
124 )`,
125 errors: [blockError]
126 },
127 {
128 code: `var a = (
129 <div>{// comment
130 }
131 </div>
132 )`,
133 errors: [lineError]
134 },
135 {
136 code: `var a = (
137 <div>{/* comment */
138 }
139 </div>
140 )`,
141 errors: [blockError]
142 },
143 {
144 code: `var a = (
145 <div>{/*
146 * comment
147 */
148 }
149 </div>
150 )`,
151 errors: [blockError]
152 },
153 {
154 code: `var a = (
155 <div>{/*
156 * comment
157 */}
158 </div>
159 )`,
160 errors: [blockError]
161 },
162 {
163 code: `var a = (
164 <div>{/*
165 * comment
166 */}</div>
167 )`,
168 errors: [blockError]
169 },
170 {
171 code: `var a = (
172 <div>
173 {/*
174 * comment
175 */}</div>
176 )`,
177 errors: [blockError]
178 },
179 {
180 code: `var a = (
181 <div>
182 {
183 /*
184 * comment
185 */}</div>
186 )`,
187 errors: [blockError]
188 },
189 {
190 code: `var a = (
191 <div>
192 {
193 /* comment */}</div>
194 )`,
195 errors: [blockError]
196 },
197 {
198 code: `var a = (
199 <div>
200 {b/* comment */}
201 </div>
202 )`,
203 errors: [blockError]
204 },
205 {
206 code: `var a = (
207 <div>
208 {/* comment */b}
209 </div>
210 )`,
211 errors: [blockError]
212 },
213 {
214 code: `var a = (
215 <div>
216 {// comment
217 b
218 }
219 </div>
220 )`,
221 errors: [lineError]
222 },
223 {
224 code: `var a = (
225 <div>
226 {/* comment */
227 b
228 }
229 </div>
230 )`,
231 errors: [blockError]
232 },
233 {
234 code: `var a = (
235 <div>
236 {/*
237 * comment
238 */
239 b
240 }
241 </div>
242 )`,
243 errors: [blockError]
244 },
245 {
246 code: `var a = (
247 <div>
248 {
249 b// comment
250 }
251 </div>
252 )`,
253 errors: [lineError]
254 },
255 {
256 code: `var a = (
257 <div>
258 {
259 /* comment */b
260 }
261 </div>
262 )`,
263 errors: [blockError]
264 },
265 {
266 code: `var a = (
267 <div>
268 {
269 b/* comment */
270 }
271 </div>
272 )`,
273 errors: [blockError]
274 },
275 {
276 code: `var a = (
277 <div>
278 {
279 b
280 /*
281 * comment
282 */}
283 </div>
284 )`,
285 errors: [blockError]
286 },
287 {
288 code: `var a = (
289 <div>
290 {
291 b
292 /* comment */}
293 </div>
294 )`,
295 errors: [blockError]
296 },
297 {
298 code: `var a = (
299 <div>
300 {
301 { /* this is an empty object literal, not braces for js code! */ }
302 }
303 </div>
304 )`,
305 errors: [blockError]
306 },
307 {
308 code: `var a = (
309 <div>
310 {
311 {// comment
312 }
313 }
314 </div>
315 )`,
316 errors: [lineError]
317 },
318 {
319 code: `var a = (
320 <div>
321 {
322 {
323 /* comment */}
324 }
325 </div>
326 )`,
327 errors: [blockError]
328 },
329 {
330 code: `var a = (
331 <div>
332 { /* two comments on the same line... */ /* ...are not allowed, same as with a non-JSX code */}
333 </div>
334 )`,
335 errors: [blockError, blockError]
336 },
337 {
338 code: `var a = (
339 <div>
340 {
341 /* overlapping
342 */ /*
343 lines */
344 }
345 </div>
346 )`,
347 errors: [blockError, blockError]
348 }
349 ]
350 });