mirror of
https://git.proxmox.com/git/pve-eslint
synced 2025-08-24 09:36:06 +00:00

includes a (minimal) working wrapper Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
210 lines
5.5 KiB
JavaScript
210 lines
5.5 KiB
JavaScript
/**
|
|
* @fileoverview Tests for no-lonely-if rule.
|
|
* @author Brandon Mills
|
|
*/
|
|
"use strict";
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Requirements
|
|
//------------------------------------------------------------------------------
|
|
|
|
const rule = require("../../../lib/rules/no-lonely-if"),
|
|
{ RuleTester } = require("../../../lib/rule-tester");
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Tests
|
|
//------------------------------------------------------------------------------
|
|
|
|
const ruleTester = new RuleTester();
|
|
const errors = [{ messageId: "unexpectedLonelyIf", type: "IfStatement" }];
|
|
|
|
ruleTester.run("no-lonely-if", rule, {
|
|
|
|
// Examples of code that should not trigger the rule
|
|
valid: [
|
|
"if (a) {;} else if (b) {;}",
|
|
"if (a) {;} else { if (b) {;} ; }"
|
|
],
|
|
|
|
// Examples of code that should trigger the rule
|
|
invalid: [
|
|
{
|
|
code: "if (a) {;} else { if (b) {;} }",
|
|
output: "if (a) {;} else if (b) {;}",
|
|
errors
|
|
},
|
|
{
|
|
code:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else {\n" +
|
|
" if (b) {\n" +
|
|
" bar();\n" +
|
|
" }\n" +
|
|
"}",
|
|
output:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else if (b) {\n" +
|
|
" bar();\n" +
|
|
" }",
|
|
errors
|
|
},
|
|
{
|
|
code:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else /* comment */ {\n" +
|
|
" if (b) {\n" +
|
|
" bar();\n" +
|
|
" }\n" +
|
|
"}",
|
|
output:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else /* comment */ if (b) {\n" +
|
|
" bar();\n" +
|
|
" }",
|
|
errors
|
|
},
|
|
{
|
|
code:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else {\n" +
|
|
" /* otherwise, do the other thing */ if (b) {\n" +
|
|
" bar();\n" +
|
|
" }\n" +
|
|
"}",
|
|
output: null,
|
|
errors
|
|
},
|
|
{
|
|
code:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else {\n" +
|
|
" if /* this comment is ok */ (b) {\n" +
|
|
" bar();\n" +
|
|
" }\n" +
|
|
"}",
|
|
output:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else if /* this comment is ok */ (b) {\n" +
|
|
" bar();\n" +
|
|
" }",
|
|
errors
|
|
},
|
|
{
|
|
code:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else {\n" +
|
|
" if (b) {\n" +
|
|
" bar();\n" +
|
|
" } /* this comment will prevent this test case from being autofixed. */\n" +
|
|
"}",
|
|
output: null,
|
|
errors
|
|
},
|
|
{
|
|
code: "if (foo) {} else { if (bar) baz(); }",
|
|
output: "if (foo) {} else if (bar) baz();",
|
|
errors
|
|
},
|
|
{
|
|
|
|
// Not fixed; removing the braces would cause a SyntaxError.
|
|
code: "if (foo) {} else { if (bar) baz() } qux();",
|
|
output: null,
|
|
errors
|
|
},
|
|
{
|
|
|
|
// This is fixed because there is a semicolon after baz().
|
|
code: "if (foo) {} else { if (bar) baz(); } qux();",
|
|
output: "if (foo) {} else if (bar) baz(); qux();",
|
|
errors
|
|
},
|
|
{
|
|
|
|
// Not fixed; removing the braces would change the semantics due to ASI.
|
|
code:
|
|
"if (foo) {\n" +
|
|
"} else {\n" +
|
|
" if (bar) baz()\n" +
|
|
"}\n" +
|
|
"[1, 2, 3].forEach(foo);",
|
|
output: null,
|
|
errors
|
|
},
|
|
{
|
|
|
|
// Not fixed; removing the braces would change the semantics due to ASI.
|
|
code:
|
|
"if (foo) {\n" +
|
|
"} else {\n" +
|
|
" if (bar) baz++\n" +
|
|
"}\n" +
|
|
"foo;",
|
|
output: null,
|
|
errors
|
|
},
|
|
{
|
|
|
|
// This is fixed because there is a semicolon after baz++
|
|
code:
|
|
"if (foo) {\n" +
|
|
"} else {\n" +
|
|
" if (bar) baz++;\n" +
|
|
"}\n" +
|
|
"foo;",
|
|
output:
|
|
"if (foo) {\n" +
|
|
"} else if (bar) baz++;\n" +
|
|
"foo;",
|
|
errors
|
|
},
|
|
{
|
|
|
|
// Not fixed; bar() would be interpreted as a template literal tag
|
|
code:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else {\n" +
|
|
" if (b) bar()\n" +
|
|
"}\n" +
|
|
"`template literal`;",
|
|
output: null,
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors
|
|
},
|
|
{
|
|
code:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else {\n" +
|
|
" if (b) {\n" +
|
|
" bar();\n" +
|
|
" } else if (c) {\n" +
|
|
" baz();\n" +
|
|
" } else {\n" +
|
|
" qux();\n" +
|
|
" }\n" +
|
|
"}",
|
|
output:
|
|
"if (a) {\n" +
|
|
" foo();\n" +
|
|
"} else if (b) {\n" +
|
|
" bar();\n" +
|
|
" } else if (c) {\n" +
|
|
" baz();\n" +
|
|
" } else {\n" +
|
|
" qux();\n" +
|
|
" }",
|
|
errors
|
|
}
|
|
]
|
|
});
|