]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-loop-func.js
2 * @fileoverview Tests for no-loop-func rule.
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/no-loop-func"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester();
21 ruleTester
.run("no-loop-func", rule
, {
23 "string = 'function a() {}';",
24 "for (var i=0; i<l; i++) { } var a = function() { i; };",
25 "for (var i=0, a=function() { i; }; i<l; i++) { }",
26 "for (var x in xs.filter(function(x) { return x != upper; })) { }",
28 code
: "for (var x of xs.filter(function(x) { return x != upper; })) { }",
29 parserOptions
: { ecmaVersion
: 6 }
32 // no refers to variables that declared on upper scope.
33 "for (var i=0; i<l; i++) { (function() {}) }",
34 "for (var i in {}) { (function() {}) }",
36 code
: "for (var i of {}) { (function() {}) }",
37 parserOptions
: { ecmaVersion
: 6 }
40 // functions which are using unmodified variables are OK.
42 code
: "for (let i=0; i<l; i++) { (function() { i; }) }",
43 parserOptions
: { ecmaVersion
: 6 }
46 code
: "for (let i in {}) { i = 7; (function() { i; }) }",
47 parserOptions
: { ecmaVersion
: 6 }
50 code
: "for (const i of {}) { (function() { i; }) }",
51 parserOptions
: { ecmaVersion
: 6 }
54 code
: "for (let i = 0; i < 10; ++i) { for (let x in xs.filter(x => x != i)) { } }",
55 parserOptions
: { ecmaVersion
: 6 }
58 code
: "let a = 0; for (let i=0; i<l; i++) { (function() { a; }); }",
59 parserOptions
: { ecmaVersion
: 6 }
62 code
: "let a = 0; for (let i in {}) { (function() { a; }); }",
63 parserOptions
: { ecmaVersion
: 6 }
66 code
: "let a = 0; for (let i of {}) { (function() { a; }); }",
67 parserOptions
: { ecmaVersion
: 6 }
70 code
: "let a = 0; for (let i=0; i<l; i++) { (function() { (function() { a; }); }); }",
71 parserOptions
: { ecmaVersion
: 6 }
74 code
: "let a = 0; for (let i in {}) { function foo() { (function() { a; }); } }",
75 parserOptions
: { ecmaVersion
: 6 }
78 code
: "let a = 0; for (let i of {}) { (() => { (function() { a; }); }); }",
79 parserOptions
: { ecmaVersion
: 6 }
82 code
: "var a = 0; for (let i=0; i<l; i++) { (function() { a; }); }",
83 parserOptions
: { ecmaVersion
: 6 }
86 code
: "var a = 0; for (let i in {}) { (function() { a; }); }",
87 parserOptions
: { ecmaVersion
: 6 }
90 code
: "var a = 0; for (let i of {}) { (function() { a; }); }",
91 parserOptions
: { ecmaVersion
: 6 }
96 "for (const score in scores) {",
97 " const letters = scores[score];",
98 " letters.split('').forEach(letter => {",
99 " result[letter] = score;",
102 "result.__default = 6;"
104 parserOptions
: { ecmaVersion
: 6 }
109 " (function() { a; });",
113 parserOptions
: { ecmaVersion
: 6 }
118 code
: "for (var i=0; i<l; i++) { (function() { i; }) }",
119 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
122 code
: "for (var i=0; i<l; i++) { for (var j=0; j<m; j++) { (function() { i+j; }) } }",
123 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i', 'j'" }, type
: "FunctionExpression" }]
126 code
: "for (var i in {}) { (function() { i; }) }",
127 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
130 code
: "for (var i of {}) { (function() { i; }) }",
131 parserOptions
: { ecmaVersion
: 6 },
132 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
135 code
: "for (var i=0; i < l; i++) { (() => { i; }) }",
136 parserOptions
: { ecmaVersion
: 6 },
137 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "ArrowFunctionExpression" }]
140 code
: "for (var i=0; i < l; i++) { var a = function() { i; } }",
141 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
144 code
: "for (var i=0; i < l; i++) { function a() { i; }; a(); }",
145 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionDeclaration" }]
148 code
: "for (var i=0; (function() { i; })(), i<l; i++) { }",
149 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
152 code
: "for (var i=0; i<l; (function() { i; })(), i++) { }",
153 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
156 code
: "while(i) { (function() { i; }) }",
157 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
160 code
: "do { (function() { i; }) } while (i)",
161 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "FunctionExpression" }]
164 // Warns functions which are using modified variables.
166 code
: "let a; for (let i=0; i<l; i++) { a = 1; (function() { a; });}",
167 parserOptions
: { ecmaVersion
: 6 },
168 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
171 code
: "let a; for (let i in {}) { (function() { a; }); a = 1; }",
172 parserOptions
: { ecmaVersion
: 6 },
173 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
176 code
: "let a; for (let i of {}) { (function() { a; }); } a = 1; ",
177 parserOptions
: { ecmaVersion
: 6 },
178 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
181 code
: "let a; for (let i=0; i<l; i++) { (function() { (function() { a; }); }); a = 1; }",
182 parserOptions
: { ecmaVersion
: 6 },
183 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
186 code
: "let a; for (let i in {}) { a = 1; function foo() { (function() { a; }); } }",
187 parserOptions
: { ecmaVersion
: 6 },
188 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionDeclaration" }]
191 code
: "let a; for (let i of {}) { (() => { (function() { a; }); }); } a = 1;",
192 parserOptions
: { ecmaVersion
: 6 },
193 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "ArrowFunctionExpression" }]
196 code
: "for (var i = 0; i < 10; ++i) { for (let x in xs.filter(x => x != i)) { } }",
197 parserOptions
: { ecmaVersion
: 6 },
198 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'i'" }, type
: "ArrowFunctionExpression" }]
201 code
: "for (let x of xs) { let a; for (let y of ys) { a = 1; (function() { a; }); } }",
202 parserOptions
: { ecmaVersion
: 6 },
203 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
206 code
: "for (var x of xs) { for (let y of ys) { (function() { x; }); } }",
207 parserOptions
: { ecmaVersion
: 6 },
208 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'x'" }, type
: "FunctionExpression" }]
211 code
: "for (var x of xs) { (function() { x; }); }",
212 parserOptions
: { ecmaVersion
: 6 },
213 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'x'" }, type
: "FunctionExpression" }]
216 code
: "var a; for (let x of xs) { a = 1; (function() { a; }); }",
217 parserOptions
: { ecmaVersion
: 6 },
218 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
221 code
: "var a; for (let x of xs) { (function() { a; }); a = 1; }",
222 parserOptions
: { ecmaVersion
: 6 },
223 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
226 code
: "let a; function foo() { a = 10; } for (let x of xs) { (function() { a; }); } foo();",
227 parserOptions
: { ecmaVersion
: 6 },
228 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]
231 code
: "let a; function foo() { a = 10; for (let x of xs) { (function() { a; }); } } foo();",
232 parserOptions
: { ecmaVersion
: 6 },
233 errors
: [{ messageId
: "unsafeRefs", data
: { varNames
: "'a'" }, type
: "FunctionExpression" }]