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