]> git.proxmox.com Git - pve-eslint.git/blame - eslint/tests/lib/rules/operator-linebreak.js
import and build new upstream release 7.2.0
[pve-eslint.git] / eslint / tests / lib / rules / operator-linebreak.js
CommitLineData
eb39fafa
DC
1/**
2 * @fileoverview Operator linebreak rule tests
3 * @author BenoƮt Zugmeyer
4 */
5"use strict";
6
7//------------------------------------------------------------------------------
8// Requirements
9//------------------------------------------------------------------------------
10
11const rule = require("../../../lib/rules/operator-linebreak"),
12 { RuleTester } = require("../../../lib/rule-tester");
13
14//------------------------------------------------------------------------------
15// Tests
16//------------------------------------------------------------------------------
17
18const ruleTester = new RuleTester();
19
20ruleTester.run("operator-linebreak", rule, {
21
22 valid: [
23 "1 + 1",
24 "1 + 1 + 1",
25 "1 +\n1",
26 "1 + (1 +\n1)",
27 "f(1 +\n1)",
28 "1 || 1",
29 "1 || \n1",
30 "a += 1",
31 "var a;",
32 "var o = \nsomething",
33 "o = \nsomething",
34 "'a\\\n' +\n 'c'",
35 "'a' +\n 'b\\\n'",
36 "(a\n) + b",
37 "answer = everything \n? 42 \n: foo;",
38 { code: "answer = everything ?\n 42 :\n foo;", options: ["after"] },
39
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" } }] },
43
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"] },
50
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: "answer = everything \n?\n 42 : foo;", options: [null, { overrides: { "?": "ignore" } }] },
60 { code: "answer = everything ? 42 \n:\n foo;", options: [null, { overrides: { ":": "ignore" } }] }
61 ],
62
63 invalid: [
64 {
65 code: "1\n+ 1",
66 output: "1 +\n1",
67 errors: [{
68 messageId: "operatorAtEnd",
69 data: { operator: "+" },
70 type: "BinaryExpression",
71 line: 2,
72 column: 1,
73 endLine: 2,
74 endColumn: 2
75 }]
76 },
77 {
78 code: "1 + 2 \n + 3",
79 output: "1 + 2 + \n 3",
80 errors: [{
81 messageId: "operatorAtEnd",
82 data: { operator: "+" },
83 type: "BinaryExpression",
84 line: 2,
85 column: 2,
86 endLine: 2,
87 endColumn: 3
88 }]
89 },
90 {
91 code: "1\n+\n1",
92 output: "1+\n1",
93 errors: [{
94 messageId: "badLinebreak",
95 data: { operator: "+" },
96 type: "BinaryExpression",
97 line: 2,
98 column: 1,
99 endLine: 2,
100 endColumn: 2
101 }]
102 },
103 {
104 code: "1 + (1\n+ 1)",
105 output: "1 + (1 +\n1)",
106 errors: [{
107 messageId: "operatorAtEnd",
108 data: { operator: "+" },
109 type: "BinaryExpression",
110 line: 2,
111 column: 1,
112 endLine: 2,
113 endColumn: 2
114 }]
115 },
116 {
117 code: "f(1\n+ 1);",
118 output: "f(1 +\n1);",
119 errors: [{
120 messageId: "operatorAtEnd",
121 data: { operator: "+" },
122 type: "BinaryExpression",
123 line: 2,
124 column: 1,
125 endLine: 2,
126 endColumn: 2
127 }]
128 },
129 {
130 code: "1 \n || 1",
131 output: "1 || \n 1",
132 errors: [{
133 messageId: "operatorAtEnd",
134 data: { operator: "||" },
135 type: "LogicalExpression",
136 line: 2,
137 column: 2,
138 endLine: 2,
139 endColumn: 4
140 }]
141 },
142 {
143 code: "a\n += 1",
144 output: "a +=\n 1",
145 errors: [{
146 messageId: "operatorAtEnd",
147 data: { operator: "+=" },
148 type: "AssignmentExpression",
149 line: 2,
150 column: 2,
151 endLine: 2,
152 endColumn: 4
153 }]
154 },
155 {
156 code: "var a\n = 1",
157 output: "var a =\n 1",
158 errors: [{
159 messageId: "operatorAtEnd",
160 data: { operator: "=" },
161 type: "VariableDeclarator",
162 line: 2,
163 column: 2,
164 endLine: 2,
165 endColumn: 3
166 }]
167 },
168 {
169 code: "(b)\n*\n(c)",
170 output: "(b)*\n(c)",
171 errors: [{
172 messageId: "badLinebreak",
173 data: { operator: "*" },
174 type: "BinaryExpression",
175 line: 2,
176 column: 1,
177 endLine: 2,
178 endColumn: 2
179 }]
180 },
181 {
182 code: "answer = everything ?\n 42 :\n foo;",
183 output: "answer = everything\n ? 42\n : foo;",
184 errors: [{
185 messageId: "operatorAtBeginning",
186 data: { operator: "?" },
187 type: "ConditionalExpression",
188 line: 1,
189 column: 21,
190 endLine: 1,
191 endColumn: 22
192 },
193 {
194 messageId: "operatorAtBeginning",
195 data: { operator: ":" },
196 type: "ConditionalExpression",
197 line: 2,
198 column: 6,
199 endLine: 2,
200 endColumn: 7
201 }]
202 },
203
204 {
205 code: "answer = everything \n? 42 \n: foo;",
206 output: "answer = everything ? \n42 : \nfoo;",
207 options: ["after"],
208 errors: [{
209 messageId: "operatorAtEnd",
210 data: { operator: "?" },
211 type: "ConditionalExpression",
212 line: 2,
213 column: 1,
214 endLine: 2,
215 endColumn: 2
216 },
217 {
218 messageId: "operatorAtEnd",
219 data: { operator: ":" },
220 type: "ConditionalExpression",
221 line: 3,
222 column: 1,
223 endLine: 3,
224 endColumn: 2
225 }]
226 },
227
228 {
229 code: "1 +\n1",
230 output: "1\n+ 1",
231 options: ["before"],
232 errors: [{
233 messageId: "operatorAtBeginning",
234 data: { operator: "+" },
235 type: "BinaryExpression",
236 line: 1,
237 column: 3,
238 endLine: 1,
239 endColumn: 4
240 }]
241 },
242 {
243 code: "f(1 +\n1);",
244 output: "f(1\n+ 1);",
245 options: ["before"],
246 errors: [{
247 messageId: "operatorAtBeginning",
248 data: { operator: "+" },
249 type: "BinaryExpression",
250 line: 1,
251 column: 5,
252 endLine: 1,
253 endColumn: 6
254 }]
255 },
256 {
257 code: "1 || \n 1",
258 output: "1 \n || 1",
259 options: ["before"],
260 errors: [{
261 messageId: "operatorAtBeginning",
262 data: { operator: "||" },
263 type: "LogicalExpression",
264 line: 1,
265 column: 3,
266 endLine: 1,
267 endColumn: 5
268 }]
269 },
270 {
271 code: "a += \n1",
272 output: "a \n+= 1",
273 options: ["before"],
274 errors: [{
275 messageId: "operatorAtBeginning",
276 data: { operator: "+=" },
277 type: "AssignmentExpression",
278 line: 1,
279 column: 3,
280 endLine: 1,
281 endColumn: 5
282 }]
283 },
284 {
285 code: "var a = \n1",
286 output: "var a \n= 1",
287 options: ["before"],
288 errors: [{
289 messageId: "operatorAtBeginning",
290 data: { operator: "=" },
291 type: "VariableDeclarator",
292 line: 1,
293 column: 7,
294 endLine: 1,
295 endColumn: 8
296 }]
297 },
298 {
299 code: "answer = everything ?\n 42 :\n foo;",
300 output: "answer = everything\n ? 42\n : foo;",
301 options: ["before"],
302 errors: [{
303 messageId: "operatorAtBeginning",
304 data: { operator: "?" },
305 type: "ConditionalExpression",
306 line: 1,
307 column: 21,
308 endLine: 1,
309 endColumn: 22
310 },
311 {
312 messageId: "operatorAtBeginning",
313 data: { operator: ":" },
314 type: "ConditionalExpression",
315 line: 2,
316 column: 6,
317 endLine: 2,
318 endColumn: 7
319 }]
320 },
321
322 {
323 code: "1 +\n1",
324 output: "1 +1",
325 options: ["none"],
326 errors: [{
327 messageId: "noLinebreak",
328 data: { operator: "+" },
329 type: "BinaryExpression",
330 line: 1,
331 column: 3,
332 endLine: 1,
333 endColumn: 4
334 }]
335 },
336 {
337 code: "1\n+1",
338 output: "1+1",
339 options: ["none"],
340 errors: [{
341 messageId: "noLinebreak",
342 data: { operator: "+" },
343 type: "BinaryExpression",
344 line: 2,
345 column: 1,
346 endLine: 2,
347 endColumn: 2
348 }]
349 },
350 {
351 code: "f(1 +\n1);",
352 output: "f(1 +1);",
353 options: ["none"],
354 errors: [{
355 messageId: "noLinebreak",
356 data: { operator: "+" },
357 type: "BinaryExpression",
358 line: 1,
359 column: 5,
360 endLine: 1,
361 endColumn: 6
362 }]
363 },
364 {
365 code: "f(1\n+ 1);",
366 output: "f(1+ 1);",
367 options: ["none"],
368 errors: [{
369 messageId: "noLinebreak",
370 data: { operator: "+" },
371 type: "BinaryExpression",
372 line: 2,
373 column: 1,
374 endLine: 2,
375 endColumn: 2
376 }]
377 },
378 {
379 code: "1 || \n 1",
380 output: "1 || 1",
381 options: ["none"],
382 errors: [{
383 messageId: "noLinebreak",
384 data: { operator: "||" },
385 type: "LogicalExpression",
386 line: 1,
387 column: 3,
388 endLine: 1,
389 endColumn: 5
390 }]
391 },
392 {
393 code: "1 \n || 1",
394 output: "1 || 1",
395 options: ["none"],
396 errors: [{
397 messageId: "noLinebreak",
398 data: { operator: "||" },
399 type: "LogicalExpression",
400 line: 2,
401 column: 2,
402 endLine: 2,
403 endColumn: 4
404 }]
405 },
406 {
407 code: "a += \n1",
408 output: "a += 1",
409 options: ["none"],
410 errors: [{
411 messageId: "noLinebreak",
412 data: { operator: "+=" },
413 type: "AssignmentExpression",
414 line: 1,
415 column: 3,
416 endLine: 1,
417 endColumn: 5
418 }]
419 },
420 {
421 code: "a \n+= 1",
422 output: "a += 1",
423 options: ["none"],
424 errors: [{
425 messageId: "noLinebreak",
426 data: { operator: "+=" },
427 type: "AssignmentExpression",
428 line: 2,
429 column: 1,
430 endLine: 2,
431 endColumn: 3
432 }]
433 },
434 {
435 code: "var a = \n1",
436 output: "var a = 1",
437 options: ["none"],
438 errors: [{
439 messageId: "noLinebreak",
440 data: { operator: "=" },
441 type: "VariableDeclarator",
442 line: 1,
443 column: 7,
444 endLine: 1,
445 endColumn: 8
446 }]
447 },
448 {
449 code: "var a \n = 1",
450 output: "var a = 1",
451 options: ["none"],
452 errors: [{
453 messageId: "noLinebreak",
454 data: { operator: "=" },
455 type: "VariableDeclarator",
456 line: 2,
457 column: 2,
458 endLine: 2,
459 endColumn: 3
460 }]
461 },
462 {
463 code: "answer = everything ?\n 42 \n: foo;",
464 output: "answer = everything ? 42 : foo;",
465 options: ["none"],
466 errors: [{
467 messageId: "noLinebreak",
468 data: { operator: "?" },
469 type: "ConditionalExpression",
470 line: 1,
471 column: 21,
472 endLine: 1,
473 endColumn: 22
474 },
475 {
476 messageId: "noLinebreak",
477 data: { operator: ":" },
478 type: "ConditionalExpression",
479 line: 3,
480 column: 1,
481 endLine: 3,
482 endColumn: 2
483 }]
484 },
485 {
486 code: "answer = everything\n?\n42 + 43\n:\nfoo;",
487 output: "answer = everything?42 + 43:foo;",
488 options: ["none"],
489 errors: [{
490 messageId: "badLinebreak",
491 data: { operator: "?" },
492 type: "ConditionalExpression",
493 line: 2,
494 column: 1,
495 endLine: 2,
496 endColumn: 2
497 },
498 {
499 messageId: "badLinebreak",
500 data: { operator: ":" },
501 type: "ConditionalExpression",
502 line: 4,
503 column: 1,
504 endLine: 4,
505 endColumn: 2
506 }]
507 },
508 {
509 code: "a = b \n >>> \n c;",
510 output: "a = b >>> \n c;",
511 errors: [{
512 messageId: "badLinebreak",
513 data: { operator: ">>>" },
514 type: "BinaryExpression",
515 line: 2,
516 column: 3,
517 endLine: 2,
518 endColumn: 6
519 }]
520 },
521 {
522 code: "foo +=\n42;\nbar -=\n12\n+ 5;",
523 output: "foo +=42;\nbar -=\n12\n+ 5;",
524 options: ["after", { overrides: { "+=": "none", "+": "before" } }],
525 errors: [{
526 messageId: "noLinebreak",
527 data: { operator: "+=" },
528 type: "AssignmentExpression",
529 line: 1,
530 column: 5,
531 endLine: 1,
532 endColumn: 7
533 }]
534 },
535 {
536 code: "answer = everything\n?\n42\n:\nfoo;",
537 output: "answer = everything\n?\n42\n:foo;",
538 options: ["after", { overrides: { "?": "ignore", ":": "before" } }],
539 errors: [{
540 messageId: "badLinebreak",
541 data: { operator: ":" },
542 type: "ConditionalExpression",
543 line: 4,
544 column: 1,
545 endLine: 4,
546 endColumn: 2
547 }]
548 },
549 {
550
551 // Insert an additional space to avoid changing the operator to ++ or --.
552 code: "foo+\n+bar",
553 output: "foo\n+ +bar",
554 options: ["before"],
555 errors: [{
556 messageId: "operatorAtBeginning",
557 data: { operator: "+" },
558 type: "BinaryExpression",
559 line: 1,
560 column: 4,
561 endLine: 1,
562 endColumn: 5
563 }]
564 },
565 {
566 code: "foo //comment\n&& bar",
567 output: "foo && //comment\nbar",
568 errors: [{
569 messageId: "operatorAtEnd",
570 data: { operator: "&&" },
571 type: "LogicalExpression",
572 line: 2,
573 column: 1,
574 endLine: 2,
575 endColumn: 3
576 }]
577 },
578 {
579 code: "foo//comment\n+\nbar",
580 output: null,
581 errors: [{
582 messageId: "badLinebreak",
583 data: { operator: "+" },
584 type: "BinaryExpression",
585 line: 2,
586 column: 1,
587 endLine: 2,
588 endColumn: 2
589 }]
590 },
591 {
592 code: "foo\n+//comment\nbar",
593 output: null,
594 options: ["before"],
595 errors: [{
596 messageId: "badLinebreak",
597 data: { operator: "+" },
598 type: "BinaryExpression",
599 line: 2,
600 column: 1,
601 endLine: 2,
602 endColumn: 2
603 }]
604 },
605 {
606 code: "foo /* a */ \n+ /* b */ bar",
607 output: null, // Not fixed because there is a comment on both sides
608 errors: [{
609 messageId: "operatorAtEnd",
610 data: { operator: "+" },
611 type: "BinaryExpression",
612 line: 2,
613 column: 1,
614 endLine: 2,
615 endColumn: 2
616 }]
617 },
618 {
619 code: "foo /* a */ +\n /* b */ bar",
620 output: null, // Not fixed because there is a comment on both sides
621 options: ["before"],
622 errors: [{
623 messageId: "operatorAtBeginning",
624 data: { operator: "+" },
625 type: "BinaryExpression",
626 line: 1,
627 column: 13,
628 endLine: 1,
629 endColumn: 14
630 }]
d3726936
TL
631 },
632 {
633 code: "foo ??\n bar",
634 output: "foo\n ?? bar",
635 options: ["after", { overrides: { "??": "before" } }],
636 parserOptions: { ecmaVersion: 2020 },
637 errors: [{
638 messageId: "operatorAtBeginning",
639 data: { operator: "??" }
640 }]
eb39fafa
DC
641 }
642 ]
643});