]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/max-statements.js
fa3d3d1f1bda2aa37af2306a41faa65c7bec754d
2 * @fileoverview Tests for max-statements rule.
3 * @author Ian Christian Myers
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/max-statements"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester();
21 ruleTester
.run("max-statements", rule
, {
23 { code
: "function foo() { var bar = 1; function qux () { var noCount = 2; } return 3; }", options
: [3] },
24 { code
: "function foo() { var bar = 1; if (true) { for (;;) { var qux = null; } } else { quxx(); } return 3; }", options
: [6] },
25 { code
: "function foo() { var x = 5; function bar() { var y = 6; } bar(); z = 10; baz(); }", options
: [5] },
26 "function foo() { var a; var b; var c; var x; var y; var z; bar(); baz(); qux(); quxx(); }",
27 { code
: "(function() { var bar = 1; return function () { return 42; }; })()", options
: [1, { ignoreTopLevelFunctions
: true }] },
28 { code
: "function foo() { var bar = 1; var baz = 2; }", options
: [1, { ignoreTopLevelFunctions
: true }] },
29 { code
: "define(['foo', 'qux'], function(foo, qux) { var bar = 1; var baz = 2; })", options
: [1, { ignoreTopLevelFunctions
: true }] },
31 // object property options
32 { code
: "var foo = { thing: function() { var bar = 1; var baz = 2; } }", options
: [2] },
33 { code
: "var foo = { thing() { var bar = 1; var baz = 2; } }", options
: [2], parserOptions
: { ecmaVersion
: 6 } },
34 { code
: "var foo = { ['thing']() { var bar = 1; var baz = 2; } }", options
: [2], parserOptions
: { ecmaVersion
: 6 } },
35 { code
: "var foo = { thing: () => { var bar = 1; var baz = 2; } }", options
: [2], parserOptions
: { ecmaVersion
: 6 } },
36 { code
: "var foo = { thing: function() { var bar = 1; var baz = 2; } }", options
: [{ max
: 2 }] }
40 code
: "function foo() { var bar = 1; var baz = 2; var qux = 3; }",
42 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: "3", max
: 2 } }]
45 code
: "var foo = () => { var bar = 1; var baz = 2; var qux = 3; };",
47 parserOptions
: { ecmaVersion
: 6 },
48 errors
: [{ messageId
: "exceed", data
: { name
: "Arrow function", count
: "3", max
: 2 } }]
51 code
: "var foo = function() { var bar = 1; var baz = 2; var qux = 3; };",
53 errors
: [{ messageId
: "exceed", data
: { name
: "Function", count
: "3", max
: 2 } }]
56 code
: "function foo() { var bar = 1; if (true) { while (false) { var qux = null; } } return 3; }",
58 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: "5", max
: 4 } }]
61 code
: "function foo() { var bar = 1; if (true) { for (;;) { var qux = null; } } return 3; }",
63 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: "5", max
: 4 } }]
66 code
: "function foo() { var bar = 1; if (true) { for (;;) { var qux = null; } } else { quxx(); } return 3; }",
68 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: "6", max
: 5 } }]
71 code
: "function foo() { var x = 5; function bar() { var y = 6; } bar(); z = 10; baz(); }",
73 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: "5", max
: 3 } }]
76 code
: "function foo() { var x = 5; function bar() { var y = 6; } bar(); z = 10; baz(); }",
78 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: "5", max
: 4 } }]
81 code
: ";(function() { var bar = 1; return function () { var z; return 42; }; })()",
82 options
: [1, { ignoreTopLevelFunctions
: true }],
83 errors
: [{ messageId
: "exceed", data
: { name
: "Function", count
: "2", max
: 1 } }]
86 code
: ";(function() { var bar = 1; var baz = 2; })(); (function() { var bar = 1; var baz = 2; })()",
87 options
: [1, { ignoreTopLevelFunctions
: true }],
89 { messageId
: "exceed", data
: { name
: "Function", count
: "2", max
: 1 } },
90 { messageId
: "exceed", data
: { name
: "Function", count
: "2", max
: 1 } }
94 code
: "define(['foo', 'qux'], function(foo, qux) { var bar = 1; var baz = 2; return function () { var z; return 42; }; })",
95 options
: [1, { ignoreTopLevelFunctions
: true }],
96 errors
: [{ messageId
: "exceed", data
: { name
: "Function", count
: "2", max
: 1 } }]
99 code
: "function foo() { var a; var b; var c; var x; var y; var z; bar(); baz(); qux(); quxx(); foo(); }",
100 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: "11", max
: 10 } }]
103 // object property options
105 code
: "var foo = { thing: function() { var bar = 1; var baz = 2; var baz2; } }",
107 errors
: [{ messageId
: "exceed", data
: { name
: "Method 'thing'", count
: "3", max
: 2 } }]
110 code
: "var foo = { thing() { var bar = 1; var baz = 2; var baz2; } }",
112 parserOptions
: { ecmaVersion
: 6 },
113 errors
: [{ messageId
: "exceed", data
: { name
: "Method 'thing'", count
: "3", max
: 2 } }]
117 * TODO decide if we want this or not
119 * code: "var foo = { ['thing']() { var bar = 1; var baz = 2; var baz2; } }",
121 * parserOptions: { ecmaVersion: 6 },
122 * errors: [{ messageId: "exceed", data: {name: "Method ''thing''", count: "3", max: 2} }]
127 code
: "var foo = { thing: () => { var bar = 1; var baz = 2; var baz2; } }",
129 parserOptions
: { ecmaVersion
: 6 },
130 errors
: [{ messageId
: "exceed", data
: { name
: "Arrow function 'thing'", count
: "3", max
: 2 } }]
133 code
: "var foo = { thing: function() { var bar = 1; var baz = 2; var baz2; } }",
134 options
: [{ max
: 2 }],
135 errors
: [{ messageId
: "exceed", data
: { name
: "Method 'thing'", count
: "3", max
: 2 } }]
138 code
: "function foo() { 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; }",
140 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: 11, max
: 10 } }]
143 code
: "function foo() { 1; }",
144 options
: [{ max
: 0 }],
145 errors
: [{ messageId
: "exceed", data
: { name
: "Function 'foo'", count
: 1, max
: 0 } }]