]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/id-length.js
e9a023bcfd158862557c689add595a74065b8e8b
2 * @fileoverview Tests for id-length rule.
3 * @author Burak Yigit Kaya
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/id-length"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester();
20 const tooShortError
= { messageId
: "tooShort", type
: "Identifier" };
21 const tooShortErrorPrivate
= { messageId
: "tooShortPrivate", type
: "PrivateIdentifier" };
22 const tooLongError
= { messageId
: "tooLong", type
: "Identifier" };
23 const tooLongErrorPrivate
= { messageId
: "tooLongPrivate", type
: "PrivateIdentifier" };
25 ruleTester
.run("id-length", rule
, {
30 "function xyz(abc, de) {};",
31 "var obj = { abc: 1, de: 2 };",
32 "var obj = { 'a': 1, bc: 2 };",
33 "var obj = {}; obj['a'] = 2;",
35 "try { blah(); } catch (err) { /* pass */ }",
36 "var handler = function ($e) {};",
39 "var xyz = new ΣΣ();",
40 "unrelatedExpressionThatNeedsToBeIgnored();",
41 "var obj = { 'a': 1, bc: 2 }; obj.tk = obj.a;",
42 "var query = location.query.q || '';",
43 "var query = location.query.q ? location.query.q : ''",
44 { code
: "let {a: foo} = bar;", parserOptions
: { ecmaVersion
: 6 } },
45 { code
: "let foo = { [a]: 1 };", parserOptions
: { ecmaVersion
: 6 } },
46 { code
: "let foo = { [a + b]: 1 };", parserOptions
: { ecmaVersion
: 6 } },
47 { code
: "var x = Foo(42)", options
: [{ min
: 1 }] },
48 { code
: "var x = Foo(42)", options
: [{ min
: 0 }] },
49 { code
: "foo.$x = Foo(42)", options
: [{ min
: 1 }] },
50 { code
: "var lalala = Foo(42)", options
: [{ max
: 6 }] },
51 { code
: "for (var q, h=0; h < 10; h++) { console.log(h); q++; }", options
: [{ exceptions
: ["h", "q"] }] },
52 { code
: "(num) => { num * num };", parserOptions
: { ecmaVersion
: 6 } },
53 { code
: "function foo(num = 0) { }", parserOptions
: { ecmaVersion
: 6 } },
54 { code
: "class MyClass { }", parserOptions
: { ecmaVersion
: 6 } },
55 { code
: "class Foo { method() {} }", parserOptions
: { ecmaVersion
: 6 } },
56 { code
: "function foo(...args) { }", parserOptions
: { ecmaVersion
: 6 } },
57 { code
: "var { prop } = {};", parserOptions
: { ecmaVersion
: 6 } },
58 { code
: "var { [a]: prop } = {};", parserOptions
: { ecmaVersion
: 6 } },
59 { code
: "var { a: foo } = {};", options
: [{ min
: 3 }], parserOptions
: { ecmaVersion
: 6 } },
60 { code
: "var { prop: foo } = {};", options
: [{ max
: 3 }], parserOptions
: { ecmaVersion
: 6 } },
61 { code
: "var { longName: foo } = {};", options
: [{ min
: 3, max
: 5 }], parserOptions
: { ecmaVersion
: 6 } },
62 { code
: "var { foo: a } = {};", options
: [{ exceptions
: ["a"] }], parserOptions
: { ecmaVersion
: 6 } },
63 { code
: "var { a: { b: { c: longName } } } = {};", parserOptions
: { ecmaVersion
: 6 } },
64 { code
: "({ a: obj.x.y.z } = {});", options
: [{ properties
: "never" }], parserOptions
: { ecmaVersion
: 6 } },
65 { code
: "import something from 'y';", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
66 { code
: "export var num = 0;", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
67 { code
: "({ prop: obj.x.y.something } = {});", parserOptions
: { ecmaVersion
: 6 } },
68 { code
: "({ prop: obj.longName } = {});", parserOptions
: { ecmaVersion
: 6 } },
69 { code
: "var obj = { a: 1, bc: 2 };", options
: [{ properties
: "never" }] },
70 { code
: "var obj = { [a]: 2 };", options
: [{ properties
: "never" }], parserOptions
: { ecmaVersion
: 6 } },
71 { code
: "var obj = {}; obj.a = 1; obj.bc = 2;", options
: [{ properties
: "never" }] },
72 { code
: "({ prop: obj.x } = {});", options
: [{ properties
: "never" }], parserOptions
: { ecmaVersion
: 6 } },
73 { code
: "var obj = { aaaaa: 1 };", options
: [{ max
: 4, properties
: "never" }] },
74 { code
: "var obj = {}; obj.aaaaa = 1;", options
: [{ max
: 4, properties
: "never" }] },
75 { code
: "({ a: obj.x.y.z } = {});", options
: [{ max
: 4, properties
: "never" }], parserOptions
: { ecmaVersion
: 6 } },
76 { code
: "({ prop: obj.xxxxx } = {});", options
: [{ max
: 4, properties
: "never" }], parserOptions
: { ecmaVersion
: 6 } },
77 { code
: "var arr = [i,j,f,b]", parserOptions
: { ecmaVersion
: 6 } },
78 { code
: "function foo([arr]) {}", parserOptions
: { ecmaVersion
: 6 } },
79 { code
: "var {x} = foo;", options
: [{ properties
: "never" }], parserOptions
: { ecmaVersion
: 6 } },
80 { code
: "var {x, y: {z}} = foo;", options
: [{ properties
: "never" }], parserOptions
: { ecmaVersion
: 6 } },
81 { code
: "let foo = { [a]: 1 };", options
: [{ properties
: "always" }], parserOptions
: { ecmaVersion
: 6 } },
82 { code
: "let foo = { [a + b]: 1 };", options
: [{ properties
: "always" }], parserOptions
: { ecmaVersion
: 6 } },
83 { code
: "function BEFORE_send() {};", options
: [{ min
: 3, max
: 5, exceptionPatterns
: ["^BEFORE_"] }] },
84 { code
: "function BEFORE_send() {};", options
: [{ min
: 3, max
: 5, exceptionPatterns
: ["^BEFORE_", "send$"] }] },
85 { code
: "function BEFORE_send() {};", options
: [{ min
: 3, max
: 5, exceptionPatterns
: ["^BEFORE_", "^A", "^Z"] }] },
86 { code
: "function BEFORE_send() {};", options
: [{ min
: 3, max
: 5, exceptionPatterns
: ["^A", "^BEFORE_", "^Z"] }] },
87 { code
: "var x = 1 ;", options
: [{ min
: 3, max
: 5, exceptionPatterns
: ["[x-z]"] }] },
91 code
: "class Foo { #xyz() {} }",
92 parserOptions
: { ecmaVersion
: 2022 }
95 code
: "class Foo { xyz = 1 }",
96 parserOptions
: { ecmaVersion
: 2022 }
99 code
: "class Foo { #xyz = 1 }",
100 parserOptions
: { ecmaVersion
: 2022 }
103 code
: "class Foo { #abc() {} }",
104 options
: [{ max
: 3 }],
105 parserOptions
: { ecmaVersion
: 2022 }
108 code
: "class Foo { abc = 1 }",
109 options
: [{ max
: 3 }],
110 parserOptions
: { ecmaVersion
: 2022 }
113 code
: "class Foo { #abc = 1 }",
114 options
: [{ max
: 3 }],
115 parserOptions
: { ecmaVersion
: 2022 }
119 { code
: "var x = 1;", errors
: [tooShortError
] },
120 { code
: "var x;", errors
: [tooShortError
] },
121 { code
: "obj.e = document.body;", errors
: [tooShortError
] },
122 { code
: "function x() {};", errors
: [tooShortError
] },
123 { code
: "function xyz(a) {};", errors
: [tooShortError
] },
124 { code
: "var obj = { a: 1, bc: 2 };", errors
: [tooShortError
] },
125 { code
: "try { blah(); } catch (e) { /* pass */ }", errors
: [tooShortError
] },
126 { code
: "var handler = function (e) {};", errors
: [tooShortError
] },
127 { code
: "for (var i=0; i < 10; i++) { console.log(i); }", errors
: [tooShortError
] },
128 { code
: "var j=0; while (j > -10) { console.log(--j); }", errors
: [tooShortError
] },
129 { code
: "var [i] = arr;", parserOptions
: { ecmaVersion
: 6 }, errors
: [tooShortError
] },
130 { code
: "var [,i,a] = arr;", parserOptions
: { ecmaVersion
: 6 }, errors
: [tooShortError
, tooShortError
] },
131 { code
: "function foo([a]) {}", parserOptions
: { ecmaVersion
: 6 }, errors
: [tooShortError
] },
133 code
: "var _$xt_$ = Foo(42)",
134 options
: [{ min
: 2, max
: 4 }],
140 code
: "var _$x$_t$ = Foo(42)",
141 options
: [{ min
: 2, max
: 4 }],
147 code
: "var toString;",
148 options
: [{ max
: 5 }],
154 code
: "(a) => { a * a };",
155 parserOptions
: { ecmaVersion
: 6 },
161 code
: "function foo(x = 0) { }",
162 parserOptions
: { ecmaVersion
: 6 },
169 parserOptions
: { ecmaVersion
: 6 },
175 code
: "class Foo { x() {} }",
176 parserOptions
: { ecmaVersion
: 6 },
182 code
: "function foo(...x) { }",
183 parserOptions
: { ecmaVersion
: 6 },
189 code
: "function foo({x}) { }",
190 parserOptions
: { ecmaVersion
: 6 },
196 code
: "function foo({x: a}) { }",
197 parserOptions
: { ecmaVersion
: 6 },
200 messageId
: "tooShort",
201 data
: { name
: "a", min
: 2 },
207 code
: "function foo({x: a, longName}) { }",
208 parserOptions
: { ecmaVersion
: 6 },
214 code
: "function foo({ longName: a }) {}",
215 options
: [{ min
: 3, max
: 5 }],
216 parserOptions
: { ecmaVersion
: 6 },
222 code
: "function foo({ prop: longName }) {};",
223 options
: [{ min
: 3, max
: 5 }],
224 parserOptions
: { ecmaVersion
: 6 },
230 code
: "function foo({ a: b }) {};",
231 options
: [{ exceptions
: ["a"] }],
232 parserOptions
: { ecmaVersion
: 6 },
235 messageId
: "tooShort",
236 data
: { name
: "b", min
: 2 },
244 code
: "var hasOwnProperty;",
245 options
: [{ max
: 10, exceptions
: [] }],
248 messageId
: "tooLong",
249 data
: { name
: "hasOwnProperty", max
: 10 },
257 code
: "function foo({ a: { b: { c: d, e } } }) { }",
258 parserOptions
: { ecmaVersion
: 6 },
261 messageId
: "tooShort",
262 data
: { name
: "d", min
: 2 },
268 messageId
: "tooShort",
269 data
: { name
: "e", min
: 2 },
277 code
: "var { x} = {};",
278 parserOptions
: { ecmaVersion
: 6 },
284 code
: "var { x: a} = {};",
285 parserOptions
: { ecmaVersion
: 6 },
288 messageId
: "tooShort",
289 data
: { name
: "a", min
: 2 },
295 code
: "var { a: a} = {};",
296 parserOptions
: { ecmaVersion
: 6 },
302 code
: "var { prop: a } = {};",
303 parserOptions
: { ecmaVersion
: 6 },
309 code
: "var { longName: a } = {};",
310 options
: [{ min
: 3, max
: 5 }],
311 parserOptions
: { ecmaVersion
: 6 },
317 code
: "var { prop: [x] } = {};",
318 parserOptions
: { ecmaVersion
: 6 },
324 code
: "var { prop: [[x]] } = {};",
325 parserOptions
: { ecmaVersion
: 6 },
331 code
: "var { prop: longName } = {};",
332 options
: [{ min
: 3, max
: 5 }],
333 parserOptions
: { ecmaVersion
: 6 },
336 messageId
: "tooLong",
337 data
: { name
: "longName", max
: 5 },
345 code
: "var { x: a} = {};",
346 options
: [{ exceptions
: ["x"] }],
347 parserOptions
: { ecmaVersion
: 6 },
350 messageId
: "tooShort",
351 data
: { name
: "a", min
: 2 },
359 code
: "var { a: { b: { c: d } } } = {};",
360 parserOptions
: { ecmaVersion
: 6 },
363 messageId
: "tooShort",
364 data
: { name
: "d", min
: 2 },
372 code
: "var { a: { b: { c: d, e } } } = {};",
373 parserOptions
: { ecmaVersion
: 6 },
376 messageId
: "tooShort",
377 data
: { name
: "d", min
: 2 },
383 messageId
: "tooShort",
384 data
: { name
: "e", min
: 2 },
392 code
: "var { a: { b: { c, e: longName } } } = {};",
393 parserOptions
: { ecmaVersion
: 6 },
396 messageId
: "tooShort",
397 data
: { name
: "c", min
: 2 },
405 code
: "var { a: { b: { c: d, e: longName } } } = {};",
406 parserOptions
: { ecmaVersion
: 6 },
409 messageId
: "tooShort",
410 data
: { name
: "d", min
: 2 },
418 code
: "var { a, b: { c: d, e: longName } } = {};",
419 parserOptions
: { ecmaVersion
: 6 },
422 messageId
: "tooShort",
423 data
: { name
: "a", min
: 2 },
429 messageId
: "tooShort",
430 data
: { name
: "d", min
: 2 },
438 code
: "import x from 'y';",
439 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
445 code
: "export var x = 0;",
446 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
452 code
: "({ a: obj.x.y.z } = {});",
453 parserOptions
: { ecmaVersion
: 6 },
456 messageId
: "tooShort",
457 data
: { name
: "z", min
: 2 },
465 code
: "({ prop: obj.x } = {});",
466 parserOptions
: { ecmaVersion
: 6 },
469 messageId
: "tooShort",
470 data
: { name
: "x", min
: 2 },
477 { code
: "var x = 1;", options
: [{ properties
: "never" }], errors
: [tooShortError
] },
479 code
: "var {prop: x} = foo;",
480 options
: [{ properties
: "never" }],
481 parserOptions
: { ecmaVersion
: 6 },
484 messageId
: "tooShort",
485 data
: { name
: "x", min
: 2 },
493 code
: "var foo = {x: prop};",
494 options
: [{ properties
: "always" }],
495 parserOptions
: { ecmaVersion
: 6 },
501 code
: "function BEFORE_send() {};",
502 options
: [{ min
: 3, max
: 5 }],
508 code
: "function NOTMATCHED_send() {};",
509 options
: [{ min
: 3, max
: 5, exceptionPatterns
: ["^BEFORE_"] }],
515 code
: "function N() {};",
516 options
: [{ min
: 3, max
: 5, exceptionPatterns
: ["^BEFORE_"] }],
524 code
: "class Foo { #x() {} }",
525 parserOptions
: { ecmaVersion
: 2022 },
531 code
: "class Foo { x = 1 }",
532 parserOptions
: { ecmaVersion
: 2022 },
538 code
: "class Foo { #x = 1 }",
539 parserOptions
: { ecmaVersion
: 2022 },
545 code
: "class Foo { #abcdefg() {} }",
546 options
: [{ max
: 3 }],
547 parserOptions
: { ecmaVersion
: 2022 },
553 code
: "class Foo { abcdefg = 1 }",
554 options
: [{ max
: 3 }],
555 parserOptions
: { ecmaVersion
: 2022 },
561 code
: "class Foo { #abcdefg = 1 }",
562 options
: [{ max
: 3 }],
563 parserOptions
: { ecmaVersion
: 2022 },