]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/padded-blocks.js
99d2e0a53e25b409de6d87dab536ba624e302db0
[pve-eslint.git] / eslint / tests / lib / rules / padded-blocks.js
1 /**
2 * @fileoverview Tests for padded-blocks rule.
3 * @author Mathias Schreck <https://github.com/lo1tuma>
4 */
5
6 "use strict";
7
8 //------------------------------------------------------------------------------
9 // Requirements
10 //------------------------------------------------------------------------------
11
12 const rule = require("../../../lib/rules/padded-blocks"),
13 { RuleTester } = require("../../../lib/rule-tester");
14
15 //------------------------------------------------------------------------------
16 // Tests
17 //------------------------------------------------------------------------------
18
19 const ruleTester = new RuleTester();
20
21 ruleTester.run("padded-blocks", rule, {
22 valid: [
23 "{\n\na();\n\n}",
24 "{\n\n\na();\n\n\n}",
25 "{\n\n//comment\na();\n\n}",
26 "{\n\na();\n//comment\n\n}",
27 "{\n\na()\n//comment\n\n}",
28 "{\n\na = 1\n\n}",
29 "{//comment\n\na();\n\n}",
30 "{ /* comment */\n\na();\n\n}",
31 "{ /* comment \n */\n\na();\n\n}",
32 "{ /* comment \n */ /* another comment \n */\n\na();\n\n}",
33 "{ /* comment \n */ /* another comment \n */\n\na();\n\n/* comment \n */ /* another comment \n */}",
34
35 "{\n\na();\n\n/* comment */ }",
36 { code: "{\n\na();\n\n/* comment */ }", options: ["always"] },
37 { code: "{\n\na();\n\n/* comment */ }", options: [{ blocks: "always" }] },
38
39 { code: "switch (a) {}", options: [{ switches: "always" }] },
40 { code: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}", options: ["always"] },
41 { code: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}", options: [{ switches: "always" }] },
42 { code: "switch (a) {\n\n//comment\ncase 0: foo();//comment\n\n}", options: [{ switches: "always" }] },
43 { code: "switch (a) {//comment\n\ncase 0: foo();\ncase 1: bar();\n\n/* comment */}", options: [{ switches: "always" }] },
44
45 { code: "class A{\n\nfoo(){}\n\n}", parserOptions: { ecmaVersion: 6 } },
46 { code: "class A{\n\nfoo(){}\n\n}", options: ["always"], parserOptions: { ecmaVersion: 6 } },
47 { code: "class A{}", options: [{ classes: "always" }], parserOptions: { ecmaVersion: 6 } },
48 { code: "class A{\n\n}", options: [{ classes: "always" }], parserOptions: { ecmaVersion: 6 } },
49 { code: "class A{\n\nfoo(){}\n\n}", options: [{ classes: "always" }], parserOptions: { ecmaVersion: 6 } },
50
51 { code: "{\na();\n}", options: ["never"] },
52 { code: "{\na();}", options: ["never"] },
53 { code: "{a();\n}", options: ["never"] },
54 { code: "{a();}", options: ["never"] },
55 { code: "{a();}", options: ["always", { allowSingleLineBlocks: true }] },
56 { code: "{\n\na();\n\n}", options: ["always", { allowSingleLineBlocks: true }] },
57 { code: "{//comment\na();}", options: ["never"] },
58 { code: "{\n//comment\na()\n}", options: ["never"] },
59 { code: "{a();//comment\n}", options: ["never"] },
60 { code: "{\na();\n//comment\n}", options: ["never"] },
61 { code: "{\na()\n//comment\n}", options: ["never"] },
62 { code: "{\na()\n//comment\nb()\n}", options: ["never"] },
63 { code: "function a() {\n/* comment */\nreturn;\n/* comment*/\n}", options: ["never"] },
64 { code: "{\n// comment\ndebugger;\n// comment\n}", options: ["never"] },
65 { code: "{\n\n// comment\nif (\n// comment\n a) {}\n\n }", options: ["always"] },
66 { code: "{\n// comment\nif (\n// comment\n a) {}\n }", options: ["never"] },
67 { code: "{\n// comment\nif (\n// comment\n a) {}\n }", options: [{ blocks: "never" }] },
68
69 { code: "switch (a) {\ncase 0: foo();\n}", options: ["never"] },
70 { code: "switch (a) {\ncase 0: foo();\n}", options: [{ switches: "never" }] },
71
72
73 { code: "class A{\nfoo(){}\n}", options: ["never"], parserOptions: { ecmaVersion: 6 } },
74 { code: "class A{\nfoo(){}\n}", options: [{ classes: "never" }], parserOptions: { ecmaVersion: 6 } },
75
76 // Ignore block statements if not configured
77 { code: "{\na();\n}", options: [{ switches: "always" }] },
78 { code: "{\n\na();\n\n}", options: [{ switches: "never" }] },
79
80 // Ignore switch statements if not configured
81 { code: "switch (a) {\ncase 0: foo();\ncase 1: bar();\n}", options: [{ blocks: "always", classes: "always" }] },
82 { code: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}", options: [{ blocks: "never", classes: "never" }] },
83
84
85 // Ignore class statements if not configured
86 { code: "class A{\nfoo(){}\n}", options: [{ blocks: "always" }], parserOptions: { ecmaVersion: 6 } },
87 { code: "class A{\n\nfoo(){}\n\n}", options: [{ blocks: "never" }], parserOptions: { ecmaVersion: 6 } }
88
89 ],
90 invalid: [
91 {
92 code: "{\n//comment\na();\n\n}",
93 output: "{\n\n//comment\na();\n\n}",
94 errors: [
95 {
96 messageId: "alwaysPadBlock",
97 line: 1,
98 column: 1
99 }
100 ]
101 },
102 {
103 code: "{ //comment\na();\n\n}",
104 output: "{ //comment\n\na();\n\n}",
105 errors: [
106 {
107 messageId: "alwaysPadBlock",
108 line: 1,
109 column: 3
110 }
111 ]
112 },
113 {
114 code: "{\n\na();\n//comment\n}",
115 output: "{\n\na();\n//comment\n\n}",
116 errors: [
117 {
118 messageId: "alwaysPadBlock",
119 line: 5,
120 column: 1
121 }
122 ]
123 },
124 {
125 code: "{\n\na()\n//comment\n}",
126 output: "{\n\na()\n//comment\n\n}",
127 errors: [
128 {
129 messageId: "alwaysPadBlock",
130 line: 5,
131 column: 1
132 }
133 ]
134 },
135 {
136 code: "{\na();\n\n}",
137 output: "{\n\na();\n\n}",
138 errors: [
139 {
140 messageId: "alwaysPadBlock",
141 line: 1
142 }
143 ]
144 },
145 {
146 code: "{\n\na();\n}",
147 output: "{\n\na();\n\n}",
148 errors: [
149 {
150 messageId: "alwaysPadBlock",
151 line: 4
152 }
153 ]
154 },
155 {
156 code: "{\na();\n}",
157 output: "{\n\na();\n\n}",
158 errors: [
159 {
160 messageId: "alwaysPadBlock",
161 line: 1
162 },
163 {
164 messageId: "alwaysPadBlock",
165 line: 3
166 }
167 ]
168 },
169 {
170 code: "{\r\na();\r\n}",
171 output: "{\n\r\na();\r\n\n}",
172 errors: [
173 {
174 messageId: "alwaysPadBlock",
175 line: 1
176 },
177 {
178 messageId: "alwaysPadBlock",
179 line: 3
180 }
181 ]
182 },
183 {
184 code: "{\na();}",
185 output: "{\n\na();\n}",
186 errors: [
187 {
188 messageId: "alwaysPadBlock",
189 line: 1
190 },
191 {
192 messageId: "alwaysPadBlock",
193 line: 2
194 }
195 ]
196 },
197 {
198 code: "{a();\n}",
199 output: "{\na();\n\n}",
200 errors: [
201 {
202 messageId: "alwaysPadBlock",
203 line: 1
204 },
205 {
206 messageId: "alwaysPadBlock",
207 line: 2
208 }
209 ]
210 },
211 {
212 code: "{a();\n}",
213 output: "{\na();\n\n}",
214 options: [{ blocks: "always" }],
215 errors: [
216 {
217 messageId: "alwaysPadBlock",
218 line: 1
219 },
220 {
221 messageId: "alwaysPadBlock",
222 line: 2
223 }
224 ]
225 },
226 {
227 code: "switch (a) {\ncase 0: foo();\ncase 1: bar();\n}",
228 output: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}",
229 options: ["always"],
230 errors: [
231 {
232 messageId: "alwaysPadBlock",
233 line: 1,
234 column: 12
235 },
236 {
237 messageId: "alwaysPadBlock",
238 line: 4,
239 column: 1
240 }
241 ]
242 },
243 {
244 code: "switch (a) {\ncase 0: foo();\ncase 1: bar();\n}",
245 output: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}",
246 options: [{ switches: "always" }],
247 errors: [
248 {
249 messageId: "alwaysPadBlock",
250 line: 1,
251 column: 12
252 },
253 {
254 messageId: "alwaysPadBlock",
255 line: 4,
256 column: 1
257 }
258 ]
259 },
260 {
261 code: "switch (a) {\n//comment\ncase 0: foo();//comment\n}",
262 output: "switch (a) {\n\n//comment\ncase 0: foo();//comment\n\n}",
263 options: [{ switches: "always" }],
264 errors: [
265 {
266 messageId: "alwaysPadBlock",
267 line: 1,
268 column: 12
269 },
270 {
271 messageId: "alwaysPadBlock",
272 line: 4,
273 column: 1
274 }
275 ]
276 },
277 {
278 code: "class A {\nconstructor(){}\n}",
279 output: "class A {\n\nconstructor(){}\n\n}",
280 options: ["always"],
281 parserOptions: { ecmaVersion: 6 },
282 errors: [
283 {
284 messageId: "alwaysPadBlock",
285 line: 1,
286 column: 9
287 },
288 {
289 messageId: "alwaysPadBlock",
290 line: 3,
291 column: 1
292 }
293 ]
294 },
295 {
296 code: "class A {\nconstructor(){}\n}",
297 output: "class A {\n\nconstructor(){}\n\n}",
298 options: [{ classes: "always" }],
299 parserOptions: { ecmaVersion: 6 },
300 errors: [
301 {
302 messageId: "alwaysPadBlock",
303 line: 1,
304 column: 9
305 },
306 {
307 messageId: "alwaysPadBlock",
308 line: 3,
309 column: 1
310 }
311 ]
312 },
313 {
314 code: "{a();}",
315 output: "{\na();\n}",
316 errors: [
317 {
318 messageId: "alwaysPadBlock",
319 line: 1
320 },
321 {
322 messageId: "alwaysPadBlock",
323 line: 1
324 }
325 ]
326 },
327 {
328 code: "{\na()\n//comment\n\n}",
329 output: "{\na()\n//comment\n}",
330 options: ["never"],
331 errors: [
332 {
333 messageId: "neverPadBlock",
334 line: 5
335 }
336 ]
337 },
338 {
339 code: "{\n\na();\n\n}",
340 output: "{\na();\n}",
341 options: ["never"],
342 errors: [
343 {
344 messageId: "neverPadBlock",
345 line: 1
346 },
347 {
348 messageId: "neverPadBlock",
349 line: 5
350 }
351 ]
352 },
353 {
354 code: "{\r\n\r\na();\r\n\r\n}",
355 output: "{\na();\n}",
356 options: ["never"],
357 errors: [
358 {
359 messageId: "neverPadBlock",
360 line: 1
361 },
362 {
363 messageId: "neverPadBlock",
364 line: 5
365 }
366 ]
367 },
368 {
369 code: "{\n\n\n a();\n\n\n}",
370 output: "{\n a();\n}",
371 options: ["never"],
372 errors: [
373 {
374 messageId: "neverPadBlock",
375 line: 1
376 },
377 {
378 messageId: "neverPadBlock",
379 line: 7
380 }
381 ]
382 },
383 {
384 code: "{\n\na();\n}",
385 output: "{\na();\n}",
386 options: ["never"],
387 errors: [
388 {
389 messageId: "neverPadBlock",
390 line: 1
391 }
392 ]
393 },
394 {
395 code: "{\n\n\ta();\n}",
396 output: "{\n\ta();\n}",
397 options: ["never"],
398 errors: [
399 {
400 messageId: "neverPadBlock",
401 line: 1
402 }
403 ]
404 },
405 {
406 code: "{\na();\n\n}",
407 output: "{\na();\n}",
408 options: ["never"],
409 errors: [
410 {
411 messageId: "neverPadBlock",
412 line: 4
413 }
414 ]
415 },
416 {
417 code: " {\n a();\n\n }",
418 output: " {\n a();\n }",
419 options: ["never"],
420 errors: [
421 {
422 messageId: "neverPadBlock",
423 line: 4
424 }
425 ]
426 },
427 {
428 code: "{\n// comment\nif (\n// comment\n a) {}\n\n}",
429 output: "{\n\n// comment\nif (\n// comment\n a) {}\n\n}",
430 options: ["always"],
431 errors: [
432 {
433 messageId: "alwaysPadBlock",
434 line: 1,
435 column: 1
436 }
437 ]
438 },
439 {
440 code: "{\n\n// comment\nif (\n// comment\n a) {}\n}",
441 output: "{\n// comment\nif (\n// comment\n a) {}\n}",
442 options: ["never"],
443 errors: [
444 {
445 messageId: "neverPadBlock",
446 line: 1,
447 column: 1
448 }
449 ]
450 },
451 {
452 code: "{\n\n// comment\nif (\n// comment\n a) {}\n}",
453 output: "{\n// comment\nif (\n// comment\n a) {}\n}",
454 options: [{ blocks: "never" }],
455 errors: [
456 {
457 messageId: "neverPadBlock",
458 line: 1,
459 column: 1
460 }
461 ]
462 },
463 {
464 code: "switch (a) {\n\ncase 0: foo();\n\n}",
465 output: "switch (a) {\ncase 0: foo();\n}",
466 options: ["never"],
467 errors: [
468 {
469 messageId: "neverPadBlock",
470 line: 1,
471 column: 12
472 },
473 {
474 messageId: "neverPadBlock",
475 line: 5,
476 column: 1
477 }
478 ]
479 },
480 {
481 code: "switch (a) {\n\ncase 0: foo();\n}",
482 output: "switch (a) {\ncase 0: foo();\n}",
483 options: [{ switches: "never" }],
484 errors: [
485 {
486 messageId: "neverPadBlock",
487 line: 1,
488 column: 12
489 }
490 ]
491 },
492 {
493 code: "switch (a) {\ncase 0: foo();\n\n }",
494 output: "switch (a) {\ncase 0: foo();\n }",
495 options: [{ switches: "never" }],
496 errors: [
497 {
498 messageId: "neverPadBlock",
499 line: 4,
500 column: 3
501 }
502 ]
503 },
504 {
505 code: "class A {\n\nconstructor(){\n\nfoo();\n\n}\n\n}",
506 output: "class A {\nconstructor(){\nfoo();\n}\n}",
507 options: ["never"],
508 parserOptions: { ecmaVersion: 6 },
509 errors: [
510 {
511 messageId: "neverPadBlock",
512 line: 1
513 },
514 {
515 messageId: "neverPadBlock",
516 line: 3
517 },
518 {
519 messageId: "neverPadBlock",
520 line: 7
521 },
522 {
523 messageId: "neverPadBlock",
524 line: 9
525 }
526 ]
527 },
528 {
529 code: "class A {\n\nconstructor(){\n\nfoo();\n\n}\n\n}",
530 output: "class A {\nconstructor(){\n\nfoo();\n\n}\n}",
531 options: [{ classes: "never" }],
532 parserOptions: { ecmaVersion: 6 },
533 errors: [
534 {
535 messageId: "neverPadBlock",
536 line: 1
537 },
538 {
539 messageId: "neverPadBlock",
540 line: 9
541 }
542 ]
543 },
544 {
545 code: "class A {\n\nconstructor(){\n\nfoo();\n\n}\n\n}",
546 output: "class A {\nconstructor(){\nfoo();\n}\n}",
547 options: [{ blocks: "never", classes: "never" }],
548 parserOptions: { ecmaVersion: 6 },
549 errors: [
550 {
551 messageId: "neverPadBlock",
552 line: 1
553 },
554 {
555 messageId: "neverPadBlock",
556 line: 3
557 },
558 {
559 messageId: "neverPadBlock",
560 line: 7
561 },
562 {
563 messageId: "neverPadBlock",
564 line: 9
565 }
566 ]
567 },
568 {
569 code: "function foo() { // a\n\n b;\n}",
570 output: "function foo() { // a\n b;\n}",
571 options: ["never"],
572 errors: [{ messageId: "neverPadBlock" }]
573 },
574 {
575 code: "function foo() { /* a\n */\n\n bar;\n}",
576 output: "function foo() { /* a\n */\n bar;\n}",
577 options: ["never"],
578 errors: [{ messageId: "neverPadBlock" }]
579 },
580 {
581 code: "function foo() {\n\n bar;\n/* a\n */}",
582 output: "function foo() {\n\n bar;\n\n/* a\n */}",
583 options: ["always"],
584 errors: [{ messageId: "alwaysPadBlock" }]
585 },
586 {
587 code: "function foo() { /* a\n */\n/* b\n */\n bar;\n}",
588 output: "function foo() { /* a\n */\n\n/* b\n */\n bar;\n\n}",
589 options: ["always"],
590 errors: [{ messageId: "alwaysPadBlock" }, { messageId: "alwaysPadBlock" }]
591 },
592 {
593 code: "function foo() { /* a\n */ /* b\n */\n bar;\n}",
594 output: "function foo() { /* a\n */ /* b\n */\n\n bar;\n\n}",
595 options: ["always"],
596 errors: [{ messageId: "alwaysPadBlock" }, { messageId: "alwaysPadBlock" }]
597 },
598 {
599 code: "function foo() { /* a\n */ /* b\n */\n bar;\n/* c\n *//* d\n */}",
600 output: "function foo() { /* a\n */ /* b\n */\n\n bar;\n\n/* c\n *//* d\n */}",
601 options: ["always"],
602 errors: [{ messageId: "alwaysPadBlock" }, { messageId: "alwaysPadBlock" }]
603 }
604 ]
605 });