]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/padded-blocks.js
import 8.3.0 source
[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
40 { code: "switch (a) {}", options: [{ switches: "always" }] },
41 { code: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}", options: ["always"] },
42 { code: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}", options: [{ switches: "always" }] },
43 { code: "switch (a) {\n\n//comment\ncase 0: foo();//comment\n\n}", options: [{ switches: "always" }] },
44 { code: "switch (a) {//comment\n\ncase 0: foo();\ncase 1: bar();\n\n/* comment */}", options: [{ switches: "always" }] },
45
46 { code: "class A{\n\nfoo(){}\n\n}", parserOptions: { ecmaVersion: 6 } },
47 { code: "class A{\n\nfoo(){}\n\n}", options: ["always"], parserOptions: { ecmaVersion: 6 } },
48 { code: "class A{}", options: [{ classes: "always" }], parserOptions: { ecmaVersion: 6 } },
49 { code: "class A{\n\n}", options: [{ classes: "always" }], parserOptions: { ecmaVersion: 6 } },
50 { code: "class A{\n\nfoo(){}\n\n}", options: [{ classes: "always" }], parserOptions: { ecmaVersion: 6 } },
51
52 { code: "{\na();\n}", options: ["never"] },
53 { code: "{\na();}", options: ["never"] },
54 { code: "{a();\n}", options: ["never"] },
55 { code: "{a();}", options: ["never"] },
56 { code: "{a();}", options: ["always", { allowSingleLineBlocks: true }] },
57 { code: "{\n\na();\n\n}", options: ["always", { allowSingleLineBlocks: true }] },
58 { code: "{//comment\na();}", options: ["never"] },
59 { code: "{\n//comment\na()\n}", options: ["never"] },
60 { code: "{a();//comment\n}", options: ["never"] },
61 { code: "{\na();\n//comment\n}", options: ["never"] },
62 { code: "{\na()\n//comment\n}", options: ["never"] },
63 { code: "{\na()\n//comment\nb()\n}", options: ["never"] },
64 { code: "function a() {\n/* comment */\nreturn;\n/* comment*/\n}", options: ["never"] },
65 { code: "{\n// comment\ndebugger;\n// comment\n}", options: ["never"] },
66 { code: "{\n\n// comment\nif (\n// comment\n a) {}\n\n }", options: ["always"] },
67 { code: "{\n// comment\nif (\n// comment\n a) {}\n }", options: ["never"] },
68 { code: "{\n// comment\nif (\n// comment\n a) {}\n }", options: [{ blocks: "never" }] },
69
70 { code: "switch (a) {\ncase 0: foo();\n}", options: ["never"] },
71 { code: "switch (a) {\ncase 0: foo();\n}", options: [{ switches: "never" }] },
72
73
74 { code: "class A{\nfoo(){}\n}", options: ["never"], parserOptions: { ecmaVersion: 6 } },
75 { code: "class A{\nfoo(){}\n}", options: [{ classes: "never" }], parserOptions: { ecmaVersion: 6 } },
76
77 { code: "class A{\n\nfoo;\n\n}", parserOptions: { ecmaVersion: 2022 } },
78 { code: "class A{\nfoo;\n}", options: ["never"], parserOptions: { ecmaVersion: 2022 } },
79
80 // Ignore block statements if not configured
81 { code: "{\na();\n}", options: [{ switches: "always" }] },
82 { code: "{\n\na();\n\n}", options: [{ switches: "never" }] },
83
84 // Ignore switch statements if not configured
85 { code: "switch (a) {\ncase 0: foo();\ncase 1: bar();\n}", options: [{ blocks: "always", classes: "always" }] },
86 { code: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}", options: [{ blocks: "never", classes: "never" }] },
87
88
89 // Ignore class statements if not configured
90 { code: "class A{\nfoo(){}\n}", options: [{ blocks: "always" }], parserOptions: { ecmaVersion: 6 } },
91 { code: "class A{\n\nfoo(){}\n\n}", options: [{ blocks: "never" }], parserOptions: { ecmaVersion: 6 } },
92
93 // class static blocks
94 {
95 code: "class C {\n\n static {\n\nfoo;\n\n} \n\n}",
96 options: ["always"],
97 parserOptions: { ecmaVersion: 2022 }
98 },
99 {
100 code: "class C {\n\n static {// comment\n\nfoo;\n\n/* comment */} \n\n}",
101 options: ["always"],
102 parserOptions: { ecmaVersion: 2022 }
103 },
104 {
105 code: "class C {\n\n static {\n\n// comment\nfoo;\n// comment\n\n} \n\n}",
106 options: ["always"],
107 parserOptions: { ecmaVersion: 2022 }
108 },
109 {
110 code: "class C {\n\n static {\n\n// comment\n\nfoo;\n\n// comment\n\n} \n\n}",
111 options: ["always"],
112 parserOptions: { ecmaVersion: 2022 }
113 },
114 {
115 code: "class C {\n\n static { foo; } \n\n}",
116 options: ["always", { allowSingleLineBlocks: true }],
117 parserOptions: { ecmaVersion: 2022 }
118 },
119 {
120 code: "class C {\n\n static\n { foo; } \n\n}",
121 options: ["always", { allowSingleLineBlocks: true }],
122 parserOptions: { ecmaVersion: 2022 }
123 },
124 {
125 code: "class C {\n\n static {} static {\n} static {\n\n} \n\n}", // empty blocks are ignored
126 options: ["always"],
127 parserOptions: { ecmaVersion: 2022 }
128 },
129 {
130 code: "class C {\n\n static\n\n { foo; } \n\n}",
131 options: ["always", { allowSingleLineBlocks: true }],
132 parserOptions: { ecmaVersion: 2022 }
133 },
134 {
135 code: "class C {\n static {\n\nfoo;\n\n} \n}",
136 options: [{ blocks: "always", classes: "never" }], // "blocks" applies to static blocks
137 parserOptions: { ecmaVersion: 2022 }
138 },
139 {
140 code: "class C {\n static {\nfoo;\n} \n}",
141 options: ["never"],
142 parserOptions: { ecmaVersion: 2022 }
143 },
144 {
145 code: "class C {\n static {foo;} \n}",
146 options: ["never"],
147 parserOptions: { ecmaVersion: 2022 }
148 },
149 {
150 code: "class C {\n static\n {\nfoo;\n} \n}",
151 options: ["never"],
152 parserOptions: { ecmaVersion: 2022 }
153 },
154 {
155 code: "class C {\n static\n\n {\nfoo;\n} \n}",
156 options: ["never"],
157 parserOptions: { ecmaVersion: 2022 }
158 },
159 {
160 code: "class C {\n static\n\n {foo;} \n}",
161 options: ["never"],
162 parserOptions: { ecmaVersion: 2022 }
163 },
164 {
165 code: "class C {\n static {// comment\nfoo;\n/* comment */} \n}",
166 options: ["never"],
167 parserOptions: { ecmaVersion: 2022 }
168 },
169 {
170 code: "class C {\n static {\n// comment\nfoo;\n// comment\n} \n}",
171 options: ["never"],
172 parserOptions: { ecmaVersion: 2022 }
173 },
174 {
175 code: "class C {\n static {} static {\n} static {\n\n} \n}", // empty blocks are ignored
176 options: ["never"],
177 parserOptions: { ecmaVersion: 2022 }
178 },
179 {
180 code: "class C {\n\n static {\nfoo;\n} \n\n}",
181 options: [{ blocks: "never", classes: "always" }], // "blocks" applies to static blocks
182 parserOptions: { ecmaVersion: 2022 }
183 },
184 {
185 code: "class C {\n\n static {\nfoo;\n} static {\n\nfoo;\n\n} \n\n}",
186 options: [{ classes: "always" }], // if there's no "blocks" in the object option, static blocks are ignored
187 parserOptions: { ecmaVersion: 2022 }
188 },
189 {
190 code: "class C {\n static {\nfoo;\n} static {\n\nfoo;\n\n} \n}",
191 options: [{ classes: "never" }], // if there's no "blocks" in the object option, static blocks are ignored
192 parserOptions: { ecmaVersion: 2022 }
193 }
194
195 ],
196 invalid: [
197 {
198 code: "{\n//comment\na();\n\n}",
199 output: "{\n\n//comment\na();\n\n}",
200 errors: [
201 {
202 messageId: "alwaysPadBlock",
203 line: 1,
204 column: 1,
205 endLine: 2,
206 endColumn: 1
207 }
208 ]
209 },
210 {
211 code: "{ //comment\na();\n\n}",
212 output: "{ //comment\n\na();\n\n}",
213 errors: [
214 {
215 messageId: "alwaysPadBlock",
216 line: 1,
217 column: 3,
218 endLine: 2,
219 endColumn: 1
220 }
221 ]
222 },
223 {
224 code: "{\n\na();\n//comment\n}",
225 output: "{\n\na();\n//comment\n\n}",
226 errors: [
227 {
228 messageId: "alwaysPadBlock",
229 line: 4,
230 column: 10,
231 endLine: 5,
232 endColumn: 1
233 }
234 ]
235 },
236 {
237 code: "{\n\na()\n//comment\n}",
238 output: "{\n\na()\n//comment\n\n}",
239 errors: [
240 {
241 messageId: "alwaysPadBlock",
242 line: 4,
243 column: 10,
244 endLine: 5,
245 endColumn: 1
246 }
247 ]
248 },
249 {
250 code: "{\na();\n\n}",
251 output: "{\n\na();\n\n}",
252 errors: [
253 {
254 messageId: "alwaysPadBlock",
255 line: 1,
256 column: 1,
257 endLine: 2,
258 endColumn: 1
259 }
260 ]
261 },
262 {
263 code: "{\n\na();\n}",
264 output: "{\n\na();\n\n}",
265 errors: [
266 {
267 messageId: "alwaysPadBlock",
268 line: 3,
269 column: 5,
270 endLine: 4,
271 endColumn: 1
272 }
273 ]
274 },
275 {
276 code: "{\na();\n}",
277 output: "{\n\na();\n\n}",
278 errors: [
279 {
280 messageId: "alwaysPadBlock",
281 line: 1,
282 column: 1,
283 endLine: 2,
284 endColumn: 1
285 },
286 {
287 messageId: "alwaysPadBlock",
288 line: 2,
289 column: 5,
290 endLine: 3,
291 endColumn: 1
292 }
293 ]
294 },
295 {
296 code: "{\r\na();\r\n}",
297 output: "{\n\r\na();\r\n\n}",
298 errors: [
299 {
300 messageId: "alwaysPadBlock",
301 line: 1,
302 column: 1,
303 endLine: 2,
304 endColumn: 1
305 },
306 {
307 messageId: "alwaysPadBlock",
308 line: 2,
309 column: 5,
310 endLine: 3,
311 endColumn: 1
312 }
313 ]
314 },
315 {
316 code: "{\na();}",
317 output: "{\n\na();\n}",
318 errors: [
319 {
320 messageId: "alwaysPadBlock",
321 line: 1,
322 column: 1,
323 endLine: 2,
324 endColumn: 1
325 },
326 {
327 messageId: "alwaysPadBlock",
328 line: 2,
329 column: 5,
330 endLine: 2,
331 endColumn: 5
332 }
333 ]
334 },
335 {
336 code: "{a();\n}",
337 output: "{\na();\n\n}",
338 errors: [
339 {
340 messageId: "alwaysPadBlock",
341 line: 1,
342 column: 1,
343 endLine: 1,
344 endColumn: 2
345 },
346 {
347 messageId: "alwaysPadBlock",
348 line: 1,
349 column: 6,
350 endLine: 2,
351 endColumn: 1
352 }
353 ]
354 },
355 {
356 code: "{a();\n}",
357 output: "{\na();\n\n}",
358 options: [{ blocks: "always" }],
359 errors: [
360 {
361 messageId: "alwaysPadBlock",
362 line: 1,
363 column: 1,
364 endLine: 1,
365 endColumn: 2
366 },
367 {
368 messageId: "alwaysPadBlock",
369 line: 1,
370 column: 6,
371 endLine: 2,
372 endColumn: 1
373 }
374 ]
375 },
376 {
377 code: "switch (a) {\ncase 0: foo();\ncase 1: bar();\n}",
378 output: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}",
379 options: ["always"],
380 errors: [
381 {
382 messageId: "alwaysPadBlock",
383 line: 1,
384 column: 12,
385 endLine: 2,
386 endColumn: 1
387 },
388 {
389 messageId: "alwaysPadBlock",
390 line: 3,
391 column: 15,
392 endLine: 4,
393 endColumn: 1
394 }
395 ]
396 },
397 {
398 code: "switch (a) {\ncase 0: foo();\ncase 1: bar();\n}",
399 output: "switch (a) {\n\ncase 0: foo();\ncase 1: bar();\n\n}",
400 options: [{ switches: "always" }],
401 errors: [
402 {
403 messageId: "alwaysPadBlock",
404 line: 1,
405 column: 12,
406 endLine: 2,
407 endColumn: 1
408 },
409 {
410 messageId: "alwaysPadBlock",
411 line: 3,
412 column: 15,
413 endLine: 4,
414 endColumn: 1
415 }
416 ]
417 },
418 {
419 code: "switch (a) {\n//comment\ncase 0: foo();//comment\n}",
420 output: "switch (a) {\n\n//comment\ncase 0: foo();//comment\n\n}",
421 options: [{ switches: "always" }],
422 errors: [
423 {
424 messageId: "alwaysPadBlock",
425 line: 1,
426 column: 12,
427 endLine: 2,
428 endColumn: 1
429 },
430 {
431 messageId: "alwaysPadBlock",
432 line: 3,
433 column: 24,
434 endLine: 4,
435 endColumn: 1
436 }
437 ]
438 },
439 {
440 code: "class A {\nconstructor(){}\n}",
441 output: "class A {\n\nconstructor(){}\n\n}",
442 options: ["always"],
443 parserOptions: { ecmaVersion: 6 },
444 errors: [
445 {
446 messageId: "alwaysPadBlock",
447 line: 1,
448 column: 9,
449 endLine: 2,
450 endColumn: 1
451 },
452 {
453 messageId: "alwaysPadBlock",
454 line: 2,
455 column: 16,
456 endLine: 3,
457 endColumn: 1
458 }
459 ]
460 },
461 {
462 code: "class A {\nconstructor(){}\n}",
463 output: "class A {\n\nconstructor(){}\n\n}",
464 options: [{ classes: "always" }],
465 parserOptions: { ecmaVersion: 6 },
466 errors: [
467 {
468 messageId: "alwaysPadBlock",
469 line: 1,
470 column: 9,
471 endLine: 2,
472 endColumn: 1
473 },
474 {
475 messageId: "alwaysPadBlock",
476 line: 2,
477 column: 16,
478 endLine: 3,
479 endColumn: 1
480 }
481 ]
482 },
483 {
484 code: "{a();}",
485 output: "{\na();\n}",
486 errors: [
487 {
488 messageId: "alwaysPadBlock",
489 line: 1,
490 column: 1,
491 endLine: 1,
492 endColumn: 2
493 },
494 {
495 messageId: "alwaysPadBlock",
496 line: 1,
497 column: 6,
498 endLine: 1,
499 endColumn: 6
500 }
501 ]
502 },
503 {
504 code: "{\na()\n//comment\n\n}",
505 output: "{\na()\n//comment\n}",
506 options: ["never"],
507 errors: [
508 {
509 messageId: "neverPadBlock",
510 line: 3,
511 column: 10,
512 endLine: 5,
513 endColumn: 1
514 }
515 ]
516 },
517 {
518 code: "{\n\na();\n\n}",
519 output: "{\na();\n}",
520 options: ["never"],
521 errors: [
522 {
523 messageId: "neverPadBlock",
524 line: 1,
525 column: 1,
526 endLine: 3,
527 endColumn: 1
528 },
529 {
530 messageId: "neverPadBlock",
531 line: 3,
532 column: 5,
533 endLine: 5,
534 endColumn: 1
535 }
536 ]
537 },
538 {
539 code: "{\r\n\r\na();\r\n\r\n}",
540 output: "{\na();\n}",
541 options: ["never"],
542 errors: [
543 {
544 messageId: "neverPadBlock",
545 line: 1,
546 column: 1,
547 endLine: 3,
548 endColumn: 1
549 },
550 {
551 messageId: "neverPadBlock",
552 line: 3,
553 column: 5,
554 endLine: 5,
555 endColumn: 1
556 }
557 ]
558 },
559 {
560 code: "{\n\n\n a();\n\n\n}",
561 output: "{\n a();\n}",
562 options: ["never"],
563 errors: [
564 {
565 messageId: "neverPadBlock",
566 line: 1,
567 column: 1,
568 endLine: 4,
569 endColumn: 3
570 },
571 {
572 messageId: "neverPadBlock",
573 line: 4,
574 column: 7,
575 endLine: 7,
576 endColumn: 1
577 }
578 ]
579 },
580 {
581 code: "{\n\na();\n}",
582 output: "{\na();\n}",
583 options: ["never"],
584 errors: [
585 {
586 messageId: "neverPadBlock",
587 line: 1,
588 column: 1,
589 endLine: 3,
590 endColumn: 1
591 }
592 ]
593 },
594 {
595 code: "{\n\n\ta();\n}",
596 output: "{\n\ta();\n}",
597 options: ["never"],
598 errors: [
599 {
600 messageId: "neverPadBlock",
601 line: 1,
602 column: 1,
603 endLine: 3,
604 endColumn: 2
605 }
606 ]
607 },
608 {
609 code: "{\na();\n\n}",
610 output: "{\na();\n}",
611 options: ["never"],
612 errors: [
613 {
614 messageId: "neverPadBlock",
615 line: 2,
616 column: 5,
617 endLine: 4,
618 endColumn: 1
619 }
620 ]
621 },
622 {
623 code: " {\n a();\n\n }",
624 output: " {\n a();\n }",
625 options: ["never"],
626 errors: [
627 {
628 messageId: "neverPadBlock",
629 line: 2,
630 column: 9,
631 endLine: 4,
632 endColumn: 3
633 }
634 ]
635 },
636 {
637 code: "{\n// comment\nif (\n// comment\n a) {}\n\n}",
638 output: "{\n\n// comment\nif (\n// comment\n a) {}\n\n}",
639 options: ["always"],
640 errors: [
641 {
642 messageId: "alwaysPadBlock",
643 line: 1,
644 column: 1,
645 endLine: 2,
646 endColumn: 1
647 }
648 ]
649 },
650 {
651 code: "{\n\n// comment\nif (\n// comment\n a) {}\n}",
652 output: "{\n// comment\nif (\n// comment\n a) {}\n}",
653 options: ["never"],
654 errors: [
655 {
656 messageId: "neverPadBlock",
657 line: 1,
658 column: 1,
659 endLine: 3,
660 endColumn: 1
661 }
662 ]
663 },
664 {
665 code: "{\n\n// comment\nif (\n// comment\n a) {}\n}",
666 output: "{\n// comment\nif (\n// comment\n a) {}\n}",
667 options: [{ blocks: "never" }],
668 errors: [
669 {
670 messageId: "neverPadBlock",
671 line: 1,
672 column: 1,
673 endLine: 3,
674 endColumn: 1
675 }
676 ]
677 },
678 {
679 code: "switch (a) {\n\ncase 0: foo();\n\n}",
680 output: "switch (a) {\ncase 0: foo();\n}",
681 options: ["never"],
682 errors: [
683 {
684 messageId: "neverPadBlock",
685 line: 1,
686 column: 12,
687 endLine: 3,
688 endColumn: 1
689 },
690 {
691 messageId: "neverPadBlock",
692 line: 3,
693 column: 15,
694 endLine: 5,
695 endColumn: 1
696 }
697 ]
698 },
699 {
700 code: "switch (a) {\n\ncase 0: foo();\n}",
701 output: "switch (a) {\ncase 0: foo();\n}",
702 options: [{ switches: "never" }],
703 errors: [
704 {
705 messageId: "neverPadBlock",
706 line: 1,
707 column: 12,
708 endLine: 3,
709 endColumn: 1
710 }
711 ]
712 },
713 {
714 code: "switch (a) {\ncase 0: foo();\n\n }",
715 output: "switch (a) {\ncase 0: foo();\n }",
716 options: [{ switches: "never" }],
717 errors: [
718 {
719 messageId: "neverPadBlock",
720 line: 2,
721 column: 15,
722 endLine: 4,
723 endColumn: 3
724 }
725 ]
726 },
727 {
728 code: "class A {\n\nconstructor(){\n\nfoo();\n\n}\n\n}",
729 output: "class A {\nconstructor(){\nfoo();\n}\n}",
730 options: ["never"],
731 parserOptions: { ecmaVersion: 6 },
732 errors: [
733 {
734 messageId: "neverPadBlock",
735 line: 1,
736 column: 9,
737 endLine: 3,
738 endColumn: 1
739 },
740 {
741 messageId: "neverPadBlock",
742 line: 3,
743 column: 14,
744 endLine: 5,
745 endColumn: 1
746 },
747 {
748 messageId: "neverPadBlock",
749 line: 5,
750 column: 7,
751 endLine: 7,
752 endColumn: 1
753 },
754 {
755 messageId: "neverPadBlock",
756 line: 7,
757 column: 2,
758 endLine: 9,
759 endColumn: 1
760 }
761 ]
762 },
763 {
764 code: "class A {\n\nconstructor(){\n\nfoo();\n\n}\n\n}",
765 output: "class A {\nconstructor(){\n\nfoo();\n\n}\n}",
766 options: [{ classes: "never" }],
767 parserOptions: { ecmaVersion: 6 },
768 errors: [
769 {
770 messageId: "neverPadBlock",
771 line: 1,
772 column: 9,
773 endLine: 3,
774 endColumn: 1
775 },
776 {
777 messageId: "neverPadBlock",
778 line: 7,
779 column: 2,
780 endLine: 9,
781 endColumn: 1
782 }
783 ]
784 },
785 {
786 code: "class A {\n\nconstructor(){\n\nfoo();\n\n}\n\n}",
787 output: "class A {\nconstructor(){\nfoo();\n}\n}",
788 options: [{ blocks: "never", classes: "never" }],
789 parserOptions: { ecmaVersion: 6 },
790 errors: [
791 {
792 messageId: "neverPadBlock",
793 line: 1,
794 column: 9,
795 endLine: 3,
796 endColumn: 1
797 },
798 {
799 messageId: "neverPadBlock",
800 line: 3,
801 column: 14,
802 endLine: 5,
803 endColumn: 1
804 },
805 {
806 messageId: "neverPadBlock",
807 line: 5,
808 column: 7,
809 endLine: 7,
810 endColumn: 1
811 },
812 {
813 messageId: "neverPadBlock",
814 line: 7,
815 column: 2,
816 endLine: 9,
817 endColumn: 1
818 }
819 ]
820 },
821 {
822 code: "function foo() { // a\n\n b;\n}",
823 output: "function foo() { // a\n b;\n}",
824 options: ["never"],
825 errors: [{ messageId: "neverPadBlock" }]
826 },
827 {
828 code: "function foo() { /* a\n */\n\n bar;\n}",
829 output: "function foo() { /* a\n */\n bar;\n}",
830 options: ["never"],
831 errors: [{ messageId: "neverPadBlock" }]
832 },
833 {
834 code: "function foo() {\n\n bar;\n/* a\n */}",
835 output: "function foo() {\n\n bar;\n\n/* a\n */}",
836 options: ["always"],
837 errors: [{ messageId: "alwaysPadBlock" }]
838 },
839 {
840 code: "function foo() { /* a\n */\n/* b\n */\n bar;\n}",
841 output: "function foo() { /* a\n */\n\n/* b\n */\n bar;\n\n}",
842 options: ["always"],
843 errors: [{ messageId: "alwaysPadBlock" }, { messageId: "alwaysPadBlock" }]
844 },
845 {
846 code: "function foo() { /* a\n */ /* b\n */\n bar;\n}",
847 output: "function foo() { /* a\n */ /* b\n */\n\n bar;\n\n}",
848 options: ["always"],
849 errors: [{ messageId: "alwaysPadBlock" }, { messageId: "alwaysPadBlock" }]
850 },
851 {
852 code: "function foo() { /* a\n */ /* b\n */\n bar;\n/* c\n *//* d\n */}",
853 output: "function foo() { /* a\n */ /* b\n */\n\n bar;\n\n/* c\n *//* d\n */}",
854 options: ["always"],
855 errors: [{ messageId: "alwaysPadBlock" }, { messageId: "alwaysPadBlock" }]
856 },
857 {
858 code: "class A{\nfoo;\n}",
859 output: "class A{\n\nfoo;\n\n}",
860 parserOptions: { ecmaVersion: 2022 },
861 errors: [{ messageId: "alwaysPadBlock" }, { messageId: "alwaysPadBlock" }]
862 },
863 {
864 code: "class A{\n\nfoo;\n\n}",
865 output: "class A{\nfoo;\n}",
866 options: ["never"],
867 parserOptions: { ecmaVersion: 2022 },
868 errors: [{ messageId: "neverPadBlock" }, { messageId: "neverPadBlock" }]
869 },
870
871 // class static blocks
872 {
873 code: "class C {\n\n static {\nfoo;\n\n} \n\n}",
874 output: "class C {\n\n static {\n\nfoo;\n\n} \n\n}",
875 options: ["always"],
876 parserOptions: { ecmaVersion: 2022 },
877 errors: [{ messageId: "alwaysPadBlock" }]
878 },
879 {
880 code: "class C {\n\n static\n {\nfoo;\n\n} \n\n}",
881 output: "class C {\n\n static\n {\n\nfoo;\n\n} \n\n}",
882 options: ["always"],
883 parserOptions: { ecmaVersion: 2022 },
884 errors: [{ messageId: "alwaysPadBlock" }]
885 },
886 {
887 code: "class C {\n\n static\n\n {\nfoo;\n\n} \n\n}",
888 output: "class C {\n\n static\n\n {\n\nfoo;\n\n} \n\n}",
889 options: ["always"],
890 parserOptions: { ecmaVersion: 2022 },
891 errors: [{ messageId: "alwaysPadBlock" }]
892 },
893 {
894 code: "class C {\n\n static {\n\nfoo;\n} \n\n}",
895 output: "class C {\n\n static {\n\nfoo;\n\n} \n\n}",
896 options: ["always"],
897 parserOptions: { ecmaVersion: 2022 },
898 errors: [{ messageId: "alwaysPadBlock" }]
899 },
900 {
901 code: "class C {\n\n static {foo;} \n\n}",
902 output: "class C {\n\n static {\nfoo;\n} \n\n}", // this is still not padded, the subsequent fix below will add another pair of `\n`.
903 options: ["always"],
904 parserOptions: { ecmaVersion: 2022 },
905 errors: [
906 { messageId: "alwaysPadBlock" },
907 { messageId: "alwaysPadBlock" }
908 ]
909 },
910 {
911 code: "class C {\n\n static {\nfoo;\n} \n\n}",
912 output: "class C {\n\n static {\n\nfoo;\n\n} \n\n}",
913 options: ["always"],
914 parserOptions: { ecmaVersion: 2022 },
915 errors: [
916 { messageId: "alwaysPadBlock" },
917 { messageId: "alwaysPadBlock" }
918 ]
919 },
920 {
921 code: "class C {\n\n static {// comment\nfoo;\n/* comment */} \n\n}",
922 output: "class C {\n\n static {// comment\n\nfoo;\n\n/* comment */} \n\n}",
923 options: ["always"],
924 parserOptions: { ecmaVersion: 2022 },
925 errors: [
926 { messageId: "alwaysPadBlock" },
927 { messageId: "alwaysPadBlock" }
928 ]
929 },
930 {
931 code: "class C {\n\n static {\n// comment\nfoo;\n// comment\n} \n\n}",
932 output: "class C {\n\n static {\n\n// comment\nfoo;\n// comment\n\n} \n\n}",
933 options: ["always"],
934 parserOptions: { ecmaVersion: 2022 },
935 errors: [
936 { messageId: "alwaysPadBlock" },
937 { messageId: "alwaysPadBlock" }
938 ]
939 },
940 {
941 code: "class C {\n\n static {\n// comment\n\nfoo;\n\n// comment\n} \n\n}",
942 output: "class C {\n\n static {\n\n// comment\n\nfoo;\n\n// comment\n\n} \n\n}",
943 options: ["always"],
944 parserOptions: { ecmaVersion: 2022 },
945 errors: [
946 { messageId: "alwaysPadBlock" },
947 { messageId: "alwaysPadBlock" }
948 ]
949 },
950 {
951 code: "class C {\n static {\nfoo;\n} \n}",
952 output: "class C {\n static {\n\nfoo;\n\n} \n}",
953 options: [{ blocks: "always", classes: "never" }], // "blocks" applies to static blocks
954 parserOptions: { ecmaVersion: 2022 },
955 errors: [
956 { messageId: "alwaysPadBlock" },
957 { messageId: "alwaysPadBlock" }
958 ]
959 },
960 {
961 code: "class C {\n static {\n\nfoo;\n} \n}",
962 output: "class C {\n static {\nfoo;\n} \n}",
963 options: ["never"],
964 parserOptions: { ecmaVersion: 2022 },
965 errors: [{ messageId: "neverPadBlock" }]
966 },
967 {
968 code: "class C {\n static\n {\n\nfoo;\n} \n}",
969 output: "class C {\n static\n {\nfoo;\n} \n}",
970 options: ["never"],
971 parserOptions: { ecmaVersion: 2022 },
972 errors: [{ messageId: "neverPadBlock" }]
973 },
974 {
975 code: "class C {\n static\n\n {\n\nfoo;\n} \n}",
976 output: "class C {\n static\n\n {\nfoo;\n} \n}",
977 options: ["never"],
978 parserOptions: { ecmaVersion: 2022 },
979 errors: [{ messageId: "neverPadBlock" }]
980 },
981 {
982 code: "class C {\n static {\nfoo;\n\n} \n}",
983 output: "class C {\n static {\nfoo;\n} \n}",
984 options: ["never"],
985 parserOptions: { ecmaVersion: 2022 },
986 errors: [{ messageId: "neverPadBlock" }]
987 },
988 {
989 code: "class C {\n static {\n\nfoo;\n\n} \n}",
990 output: "class C {\n static {\nfoo;\n} \n}",
991 options: ["never"],
992 parserOptions: { ecmaVersion: 2022 },
993 errors: [
994 { messageId: "neverPadBlock" },
995 { messageId: "neverPadBlock" }
996 ]
997 },
998 {
999 code: "class C {\n static {// comment\n\nfoo;\n\n/* comment */} \n}",
1000 output: "class C {\n static {// comment\nfoo;\n/* comment */} \n}",
1001 options: ["never"],
1002 parserOptions: { ecmaVersion: 2022 },
1003 errors: [
1004 { messageId: "neverPadBlock" },
1005 { messageId: "neverPadBlock" }
1006 ]
1007 },
1008 {
1009 code: "class C {\n static {\n\n// comment\nfoo;\n// comment\n\n} \n}",
1010 output: "class C {\n static {\n// comment\nfoo;\n// comment\n} \n}",
1011 options: ["never"],
1012 parserOptions: { ecmaVersion: 2022 },
1013 errors: [
1014 { messageId: "neverPadBlock" },
1015 { messageId: "neverPadBlock" }
1016 ]
1017 },
1018 {
1019 code: "class C {\n\n static {\n\nfoo;\n\n} \n\n}",
1020 output: "class C {\n\n static {\nfoo;\n} \n\n}",
1021 options: [{ blocks: "never", classes: "always" }], // "blocks" applies to static blocks
1022 parserOptions: { ecmaVersion: 2022 },
1023 errors: [
1024 { messageId: "neverPadBlock" },
1025 { messageId: "neverPadBlock" }
1026 ]
1027 }
1028 ]
1029 });