/** * @fileoverview Tests for no-loop-func rule. * @author Ilya Volodin */ "use strict"; //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ const rule = require("../../../lib/rules/no-loop-func"), { RuleTester } = require("../../../lib/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); ruleTester.run("no-loop-func", rule, { valid: [ "string = 'function a() {}';", "for (var i=0; i x != i)) { } }", parserOptions: { ecmaVersion: 6 } }, { code: "let a = 0; for (let i=0; i { (function() { a; }); }); }", parserOptions: { ecmaVersion: 6 } }, { code: "var a = 0; for (let i=0; i {", " result[letter] = score;", " });", "}", "result.__default = 6;" ].join("\n"), parserOptions: { ecmaVersion: 6 } }, { code: [ "while (true) {", " (function() { a; });", "}", "let a;" ].join("\n"), parserOptions: { ecmaVersion: 6 } } ], invalid: [ { code: "for (var i=0; i { i; }) }", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'i'" }, type: "ArrowFunctionExpression" }] }, { code: "for (var i=0; i < l; i++) { var a = function() { i; } }", errors: [{ messageId: "unsafeRefs", data: { varNames: "'i'" }, type: "FunctionExpression" }] }, { code: "for (var i=0; i < l; i++) { function a() { i; }; a(); }", errors: [{ messageId: "unsafeRefs", data: { varNames: "'i'" }, type: "FunctionDeclaration" }] }, { code: "for (var i=0; (function() { i; })(), i { (function() { a; }); }); } a = 1;", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'a'" }, type: "ArrowFunctionExpression" }] }, { code: "for (var i = 0; i < 10; ++i) { for (let x in xs.filter(x => x != i)) { } }", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'i'" }, type: "ArrowFunctionExpression" }] }, { code: "for (let x of xs) { let a; for (let y of ys) { a = 1; (function() { a; }); } }", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'a'" }, type: "FunctionExpression" }] }, { code: "for (var x of xs) { for (let y of ys) { (function() { x; }); } }", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'x'" }, type: "FunctionExpression" }] }, { code: "for (var x of xs) { (function() { x; }); }", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'x'" }, type: "FunctionExpression" }] }, { code: "var a; for (let x of xs) { a = 1; (function() { a; }); }", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'a'" }, type: "FunctionExpression" }] }, { code: "var a; for (let x of xs) { (function() { a; }); a = 1; }", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'a'" }, type: "FunctionExpression" }] }, { code: "let a; function foo() { a = 10; } for (let x of xs) { (function() { a; }); } foo();", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'a'" }, type: "FunctionExpression" }] }, { code: "let a; function foo() { a = 10; for (let x of xs) { (function() { a; }); } } foo();", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unsafeRefs", data: { varNames: "'a'" }, type: "FunctionExpression" }] } ] });