]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/operator-linebreak.js
2 * @fileoverview Operator linebreak rule tests
3 * @author BenoƮt Zugmeyer
7 //------------------------------------------------------------------------------
9 //------------------------------------------------------------------------------
11 const rule
= require("../../../lib/rules/operator-linebreak"),
12 { RuleTester
} = require("../../../lib/rule-tester");
14 //------------------------------------------------------------------------------
16 //------------------------------------------------------------------------------
18 const ruleTester
= new RuleTester();
20 ruleTester
.run("operator-linebreak", rule
, {
32 "var o = \nsomething",
37 "answer = everything \n? 42 \n: foo;",
38 { code
: "answer = everything ?\n 42 :\n foo;", options
: ["after"] },
40 { code
: "a ? 1 + 1\n:2", options
: [null, { overrides
: { "?": "after" } }] },
41 { code
: "a ?\n1 +\n 1\n:2", options
: [null, { overrides
: { "?": "after" } }] },
42 { code
: "o = 1 \n+ 1 - foo", options
: [null, { overrides
: { "+": "before" } }] },
44 { code
: "1\n+ 1", options
: ["before"] },
45 { code
: "1 + 1\n+ 1", options
: ["before"] },
46 { code
: "f(1\n+ 1)", options
: ["before"] },
47 { code
: "1 \n|| 1", options
: ["before"] },
48 { code
: "a += 1", options
: ["before"] },
49 { code
: "answer = everything \n? 42 \n: foo;", options
: ["before"] },
51 { code
: "1 + 1", options
: ["none"] },
52 { code
: "1 + 1 + 1", options
: ["none"] },
53 { code
: "1 || 1", options
: ["none"] },
54 { code
: "a += 1", options
: ["none"] },
55 { code
: "var a;", options
: ["none"] },
56 { code
: "\n1 + 1", options
: ["none"] },
57 { code
: "1 + 1\n", options
: ["none"] },
58 { code
: "answer = everything ? 42 : foo;", options
: ["none"] },
59 { code
: "(a\n) + (\nb)", options
: ["none"] },
60 { code
: "answer = everything \n?\n 42 : foo;", options
: [null, { overrides
: { "?": "ignore" } }] },
61 { code
: "answer = everything ? 42 \n:\n foo;", options
: [null, { overrides
: { ":": "ignore" } }] },
65 options
: ["after", { overrides
: { "&&=": "ignore" } }],
66 parserOptions
: { ecmaVersion
: 2021 }
70 options
: ["before", { overrides
: { "??=": "ignore" } }],
71 parserOptions
: { ecmaVersion
: 2021 }
75 options
: ["after", { overrides
: { "=": "before" } }],
76 parserOptions
: { ecmaVersion
: 2021 }
80 options
: ["before", { overrides
: { "&=": "after" } }],
81 parserOptions
: { ecmaVersion
: 2021 }
85 options
: ["before", { overrides
: { "|=": "after" } }],
86 parserOptions
: { ecmaVersion
: 2021 }
90 options
: ["after", { overrides
: { "&&": "before" } }],
91 parserOptions
: { ecmaVersion
: 2021 }
95 options
: ["after", { overrides
: { "||": "before" } }],
96 parserOptions
: { ecmaVersion
: 2021 }
100 options
: ["after", { overrides
: { "??": "before" } }],
101 parserOptions
: { ecmaVersion
: 2021 }
106 code
: "class C { foo =\n0 }",
107 parserOptions
: { ecmaVersion
: 2022 }
110 code
: "class C { foo\n= 0 }",
112 parserOptions
: { ecmaVersion
: 2022 }
115 code
: "class C { [foo\n]= 0 }",
117 parserOptions
: { ecmaVersion
: 2022 }
120 code
: "class C { [foo]\n= 0 }",
122 parserOptions
: { ecmaVersion
: 2022 }
125 code
: "class C { [foo\n]\n= 0 }",
127 parserOptions
: { ecmaVersion
: 2022 }
130 code
: "class C { [foo\n]= 0 }",
132 parserOptions
: { ecmaVersion
: 2022 }
135 code
: "class C { [foo\n]=\n0 }",
137 parserOptions
: { ecmaVersion
: 2022 }
140 code
: "class C { [foo\n]= 0 }",
142 parserOptions
: { ecmaVersion
: 2022 }
145 code
: "class C { foo\n=\n0 }",
146 options
: ["none", { overrides
: { "=": "ignore" } }],
147 parserOptions
: { ecmaVersion
: 2022 }
156 messageId
: "operatorAtEnd",
157 data
: { operator
: "+" },
158 type
: "BinaryExpression",
166 code
: "1 + 2 \n + 3",
167 output
: "1 + 2 + \n 3",
169 messageId
: "operatorAtEnd",
170 data
: { operator
: "+" },
171 type
: "BinaryExpression",
182 messageId
: "badLinebreak",
183 data
: { operator
: "+" },
184 type
: "BinaryExpression",
192 code
: "1 + (1\n+ 1)",
193 output
: "1 + (1 +\n1)",
195 messageId
: "operatorAtEnd",
196 data
: { operator
: "+" },
197 type
: "BinaryExpression",
206 output
: "f(1 +\n1);",
208 messageId
: "operatorAtEnd",
209 data
: { operator
: "+" },
210 type
: "BinaryExpression",
221 messageId
: "operatorAtEnd",
222 data
: { operator
: "||" },
223 type
: "LogicalExpression",
234 messageId
: "operatorAtEnd",
235 data
: { operator
: "+=" },
236 type
: "AssignmentExpression",
245 output
: "var a =\n 1",
247 messageId
: "operatorAtEnd",
248 data
: { operator
: "=" },
249 type
: "VariableDeclarator",
260 messageId
: "badLinebreak",
261 data
: { operator
: "*" },
262 type
: "BinaryExpression",
270 code
: "answer = everything ?\n 42 :\n foo;",
271 output
: "answer = everything\n ? 42\n : foo;",
273 messageId
: "operatorAtBeginning",
274 data
: { operator
: "?" },
275 type
: "ConditionalExpression",
282 messageId
: "operatorAtBeginning",
283 data
: { operator
: ":" },
284 type
: "ConditionalExpression",
293 code
: "answer = everything \n? 42 \n: foo;",
294 output
: "answer = everything ? \n42 : \nfoo;",
297 messageId
: "operatorAtEnd",
298 data
: { operator
: "?" },
299 type
: "ConditionalExpression",
306 messageId
: "operatorAtEnd",
307 data
: { operator
: ":" },
308 type
: "ConditionalExpression",
321 messageId
: "operatorAtBeginning",
322 data
: { operator
: "+" },
323 type
: "BinaryExpression",
332 output
: "f(1\n+ 1);",
335 messageId
: "operatorAtBeginning",
336 data
: { operator
: "+" },
337 type
: "BinaryExpression",
349 messageId
: "operatorAtBeginning",
350 data
: { operator
: "||" },
351 type
: "LogicalExpression",
363 messageId
: "operatorAtBeginning",
364 data
: { operator
: "+=" },
365 type
: "AssignmentExpression",
374 output
: "var a \n= 1",
377 messageId
: "operatorAtBeginning",
378 data
: { operator
: "=" },
379 type
: "VariableDeclarator",
387 code
: "answer = everything ?\n 42 :\n foo;",
388 output
: "answer = everything\n ? 42\n : foo;",
391 messageId
: "operatorAtBeginning",
392 data
: { operator
: "?" },
393 type
: "ConditionalExpression",
400 messageId
: "operatorAtBeginning",
401 data
: { operator
: ":" },
402 type
: "ConditionalExpression",
415 messageId
: "noLinebreak",
416 data
: { operator
: "+" },
417 type
: "BinaryExpression",
429 messageId
: "noLinebreak",
430 data
: { operator
: "+" },
431 type
: "BinaryExpression",
443 messageId
: "noLinebreak",
444 data
: { operator
: "+" },
445 type
: "BinaryExpression",
457 messageId
: "noLinebreak",
458 data
: { operator
: "+" },
459 type
: "BinaryExpression",
471 messageId
: "noLinebreak",
472 data
: { operator
: "||" },
473 type
: "LogicalExpression",
485 messageId
: "noLinebreak",
486 data
: { operator
: "||" },
487 type
: "LogicalExpression",
499 messageId
: "noLinebreak",
500 data
: { operator
: "+=" },
501 type
: "AssignmentExpression",
513 messageId
: "noLinebreak",
514 data
: { operator
: "+=" },
515 type
: "AssignmentExpression",
527 messageId
: "noLinebreak",
528 data
: { operator
: "=" },
529 type
: "VariableDeclarator",
537 code
: "var a \n = 1",
541 messageId
: "noLinebreak",
542 data
: { operator
: "=" },
543 type
: "VariableDeclarator",
551 code
: "answer = everything ?\n 42 \n: foo;",
552 output
: "answer = everything ? 42 : foo;",
555 messageId
: "noLinebreak",
556 data
: { operator
: "?" },
557 type
: "ConditionalExpression",
564 messageId
: "noLinebreak",
565 data
: { operator
: ":" },
566 type
: "ConditionalExpression",
574 code
: "answer = everything\n?\n42 + 43\n:\nfoo;",
575 output
: "answer = everything?42 + 43:foo;",
578 messageId
: "badLinebreak",
579 data
: { operator
: "?" },
580 type
: "ConditionalExpression",
587 messageId
: "badLinebreak",
588 data
: { operator
: ":" },
589 type
: "ConditionalExpression",
597 code
: "a = b \n >>> \n c;",
598 output
: "a = b >>> \n c;",
600 messageId
: "badLinebreak",
601 data
: { operator
: ">>>" },
602 type
: "BinaryExpression",
610 code
: "foo +=\n42;\nbar -=\n12\n+ 5;",
611 output
: "foo +=42;\nbar -=\n12\n+ 5;",
612 options
: ["after", { overrides
: { "+=": "none", "+": "before" } }],
614 messageId
: "noLinebreak",
615 data
: { operator
: "+=" },
616 type
: "AssignmentExpression",
624 code
: "answer = everything\n?\n42\n:\nfoo;",
625 output
: "answer = everything\n?\n42\n:foo;",
626 options
: ["after", { overrides
: { "?": "ignore", ":": "before" } }],
628 messageId
: "badLinebreak",
629 data
: { operator
: ":" },
630 type
: "ConditionalExpression",
639 // Insert an additional space to avoid changing the operator to ++ or --.
641 output
: "foo\n+ +bar",
644 messageId
: "operatorAtBeginning",
645 data
: { operator
: "+" },
646 type
: "BinaryExpression",
654 code
: "foo //comment\n&& bar",
655 output
: "foo && //comment\nbar",
657 messageId
: "operatorAtEnd",
658 data
: { operator
: "&&" },
659 type
: "LogicalExpression",
667 code
: "foo//comment\n+\nbar",
670 messageId
: "badLinebreak",
671 data
: { operator
: "+" },
672 type
: "BinaryExpression",
680 code
: "foo\n+//comment\nbar",
684 messageId
: "badLinebreak",
685 data
: { operator
: "+" },
686 type
: "BinaryExpression",
694 code
: "foo /* a */ \n+ /* b */ bar",
695 output
: null, // Not fixed because there is a comment on both sides
697 messageId
: "operatorAtEnd",
698 data
: { operator
: "+" },
699 type
: "BinaryExpression",
707 code
: "foo /* a */ +\n /* b */ bar",
708 output
: null, // Not fixed because there is a comment on both sides
711 messageId
: "operatorAtBeginning",
712 data
: { operator
: "+" },
713 type
: "BinaryExpression",
721 code
: "foo ??\n bar",
722 output
: "foo\n ?? bar",
723 options
: ["after", { overrides
: { "??": "before" } }],
724 parserOptions
: { ecmaVersion
: 2020 },
726 messageId
: "operatorAtBeginning",
727 data
: { operator
: "??" }
733 output
: "a &&= \n b",
735 parserOptions
: { ecmaVersion
: 2021 },
737 messageId
: "operatorAtEnd",
738 data
: { operator
: "&&=" },
739 type
: "AssignmentExpression",
750 parserOptions
: { ecmaVersion
: 2021 },
752 messageId
: "operatorAtBeginning",
753 data
: { operator
: "||=" },
754 type
: "AssignmentExpression",
765 parserOptions
: { ecmaVersion
: 2021 },
767 messageId
: "noLinebreak",
768 data
: { operator
: "??=" },
769 type
: "AssignmentExpression",
779 options
: ["before", { overrides
: { "&&=": "none" } }],
780 parserOptions
: { ecmaVersion
: 2021 },
782 messageId
: "noLinebreak",
783 data
: { operator
: "&&=" },
784 type
: "AssignmentExpression",
794 options
: ["after", { overrides
: { "||=": "before" } }],
795 parserOptions
: { ecmaVersion
: 2021 },
797 messageId
: "operatorAtBeginning",
798 data
: { operator
: "||=" },
799 type
: "AssignmentExpression",
809 options
: ["none", { overrides
: { "??=": "after" } }],
810 parserOptions
: { ecmaVersion
: 2021 },
812 messageId
: "operatorAtEnd",
813 data
: { operator
: "??=" },
814 type
: "AssignmentExpression",
824 code
: "class C { a\n= 0; }",
825 output
: "class C { a =\n0; }",
827 parserOptions
: { ecmaVersion
: 2022 },
829 messageId
: "operatorAtEnd",
830 data
: { operator
: "=" },
831 type
: "PropertyDefinition",
839 code
: "class C { a =\n0; }",
840 output
: "class C { a\n= 0; }",
842 parserOptions
: { ecmaVersion
: 2022 },
844 messageId
: "operatorAtBeginning",
845 data
: { operator
: "=" },
846 type
: "PropertyDefinition",
854 code
: "class C { a =\n0; }",
855 output
: "class C { a =0; }",
857 parserOptions
: { ecmaVersion
: 2022 },
859 messageId
: "noLinebreak",
860 data
: { operator
: "=" },
861 type
: "PropertyDefinition",
869 code
: "class C { [a]\n= 0; }",
870 output
: "class C { [a] =\n0; }",
872 parserOptions
: { ecmaVersion
: 2022 },
874 messageId
: "operatorAtEnd",
875 data
: { operator
: "=" },
876 type
: "PropertyDefinition",
884 code
: "class C { [a] =\n0; }",
885 output
: "class C { [a]\n= 0; }",
887 parserOptions
: { ecmaVersion
: 2022 },
889 messageId
: "operatorAtBeginning",
890 data
: { operator
: "=" },
891 type
: "PropertyDefinition",
899 code
: "class C { [a]\n =0; }",
900 output
: "class C { [a] =0; }",
902 parserOptions
: { ecmaVersion
: 2022 },
904 messageId
: "noLinebreak",
905 data
: { operator
: "=" },
906 type
: "PropertyDefinition",