mirror of
https://git.proxmox.com/git/pve-eslint
synced 2025-08-18 17:28:51 +00:00
666 lines
17 KiB
JavaScript
666 lines
17 KiB
JavaScript
/**
|
|
* @fileoverview Tests for semi-style rule.
|
|
* @author Toru Nagashima
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Requirements
|
|
//------------------------------------------------------------------------------
|
|
|
|
const rule = require("../../../lib/rules/semi-style"),
|
|
{ RuleTester } = require("../../../lib/rule-tester");
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Tests
|
|
//------------------------------------------------------------------------------
|
|
|
|
const ruleTester = new RuleTester();
|
|
|
|
ruleTester.run("semi-style", rule, {
|
|
valid: [
|
|
";",
|
|
";foo;bar;baz;",
|
|
"foo;\nbar;",
|
|
"for(a;b;c);",
|
|
"for(a;\nb;\nc);",
|
|
"for((a\n);\n(b\n);\n(c));",
|
|
"if(a)foo;\nbar",
|
|
{ code: ";", options: ["last"] },
|
|
{ code: ";foo;bar;baz;", options: ["last"] },
|
|
{ code: "foo;\nbar;", options: ["last"] },
|
|
{ code: "for(a;b;c);", options: ["last"] },
|
|
{ code: "for(a;\nb;\nc);", options: ["last"] },
|
|
{ code: "for((a\n);\n(b\n);\n(c));", options: ["last"] },
|
|
{ code: "class C { a; b; }", options: ["last"], parserOptions: { ecmaVersion: 2022 } },
|
|
{ code: "class C {\na;\nb;\n}", options: ["last"], parserOptions: { ecmaVersion: 2022 } },
|
|
{ code: "if(a)foo;\nbar", options: ["last"] },
|
|
{ code: ";", options: ["first"] },
|
|
{ code: ";foo;bar;baz;", options: ["first"] },
|
|
{ code: "foo\n;bar;", options: ["first"] },
|
|
{ code: "for(a;b;c);", options: ["first"] },
|
|
{ code: "for(a;\nb;\nc);", options: ["first"] },
|
|
{ code: "for((a\n);\n(b\n);\n(c));", options: ["first"] },
|
|
{ code: "class C { a ;b }", options: ["first"], parserOptions: { ecmaVersion: 2022 } },
|
|
{ code: "class C {\na\n;b\n}", options: ["first"], parserOptions: { ecmaVersion: 2022 } },
|
|
|
|
// edge cases
|
|
{
|
|
code: `
|
|
{
|
|
;
|
|
}
|
|
`,
|
|
options: ["first"]
|
|
},
|
|
{
|
|
code: `
|
|
while (a)
|
|
;
|
|
foo
|
|
`,
|
|
options: ["first"]
|
|
},
|
|
{
|
|
code: `
|
|
do
|
|
;
|
|
while (a)
|
|
`,
|
|
options: ["first"]
|
|
},
|
|
{
|
|
code: `
|
|
do
|
|
foo;
|
|
while (a)
|
|
`,
|
|
options: ["first"]
|
|
},
|
|
{
|
|
code: `
|
|
if (a)
|
|
foo;
|
|
else
|
|
bar
|
|
`,
|
|
options: ["first"]
|
|
},
|
|
{
|
|
code: `
|
|
if (a)
|
|
foo
|
|
;bar
|
|
`,
|
|
options: ["first"]
|
|
},
|
|
{
|
|
code: `
|
|
{
|
|
;
|
|
}
|
|
`,
|
|
options: ["last"]
|
|
},
|
|
{
|
|
code: `
|
|
switch (a) {
|
|
case 1:
|
|
;foo
|
|
}
|
|
`,
|
|
options: ["last"]
|
|
},
|
|
{
|
|
code: `
|
|
while (a)
|
|
;
|
|
foo
|
|
`,
|
|
options: ["last"]
|
|
},
|
|
{
|
|
code: `
|
|
do
|
|
;
|
|
while (a)
|
|
`,
|
|
options: ["last"]
|
|
},
|
|
|
|
// Class static blocks
|
|
{
|
|
code: `
|
|
class C {
|
|
static {}
|
|
}
|
|
`,
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
}
|
|
}
|
|
`,
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
bar
|
|
}
|
|
}
|
|
`,
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
;
|
|
}
|
|
}
|
|
`,
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo;
|
|
}
|
|
}
|
|
`,
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo;
|
|
bar;
|
|
}
|
|
}
|
|
`,
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo;
|
|
bar;
|
|
baz;
|
|
}
|
|
}
|
|
`,
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
bar
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
;
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
;foo
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo;
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
;bar
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
;bar;
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
;bar
|
|
;baz
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
},
|
|
{
|
|
code: `
|
|
class C {
|
|
static {
|
|
foo
|
|
;bar
|
|
;baz;
|
|
}
|
|
}
|
|
`,
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 }
|
|
}
|
|
],
|
|
invalid: [
|
|
{
|
|
code: "foo\n;bar",
|
|
output: "foo;\nbar",
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "if(a)foo\n;bar",
|
|
output: "if(a)foo;\nbar",
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "var foo\n;bar",
|
|
output: "var foo;\nbar",
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "foo\n;\nbar",
|
|
output: "foo;\nbar",
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "for(a\n;b;c)d",
|
|
output: "for(a;\nb;c)d",
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "for(a;b\n;c)d",
|
|
output: "for(a;b;\nc)d",
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "do;while(a)\n;b",
|
|
output: "do;while(a);\nb",
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
|
|
{
|
|
code: "foo\n;bar",
|
|
output: "foo;\nbar",
|
|
options: ["last"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "if(a)foo\n;bar",
|
|
output: "if(a)foo;\nbar",
|
|
options: ["last"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "var foo\n;bar",
|
|
output: "var foo;\nbar",
|
|
options: ["last"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "foo\n;\nbar",
|
|
output: "foo;\nbar",
|
|
options: ["last"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "for(a\n;b;c)d",
|
|
output: "for(a;\nb;c)d",
|
|
options: ["last"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "for(a;b\n;c)d",
|
|
output: "for(a;b;\nc)d",
|
|
options: ["last"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "foo()\n;",
|
|
output: "foo();\n",
|
|
options: ["last"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
|
|
{
|
|
code: "foo;\nbar",
|
|
output: "foo\n;bar",
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "if(a)foo;\nbar",
|
|
output: "if(a)foo\n;bar",
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "var foo;\nbar",
|
|
output: "var foo\n;bar",
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "foo\n;\nbar",
|
|
output: "foo\n;bar",
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "for(a\n;b;c)d",
|
|
output: "for(a;\nb;c)d",
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "for(a;b\n;c)d",
|
|
output: "for(a;b;\nc)d",
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
|
|
{
|
|
code: "foo\n;/**/bar",
|
|
output: null,
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "foo\n/**/;bar",
|
|
output: null,
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
|
|
{
|
|
code: "foo;\n/**/bar",
|
|
output: null,
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "foo/**/;\nbar",
|
|
output: null,
|
|
options: ["first"],
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
},
|
|
|
|
// Class fields
|
|
{
|
|
code: "class C { foo\n;bar }",
|
|
output: "class C { foo;\nbar }",
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 },
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "class C { foo;\nbar }",
|
|
output: "class C { foo\n;bar }",
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 },
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
},
|
|
|
|
// Class static blocks
|
|
{
|
|
code: "class C { static { foo\n; } }",
|
|
output: "class C { static { foo;\n} }",
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 },
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "class C { static { foo\n ;bar } }",
|
|
output: "class C { static { foo;\nbar } }",
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 },
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "class C { static { foo;\nbar\n ; } }",
|
|
output: "class C { static { foo;\nbar;\n} }",
|
|
options: ["last"],
|
|
parserOptions: { ecmaVersion: 2022 },
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the end of the previous line"
|
|
}
|
|
}]
|
|
},
|
|
{
|
|
code: "class C { static { foo;\nbar } }",
|
|
output: "class C { static { foo\n;bar } }",
|
|
options: ["first"],
|
|
parserOptions: { ecmaVersion: 2022 },
|
|
errors: [{
|
|
messageId: "expectedSemiColon",
|
|
data: {
|
|
pos: "the beginning of the next line"
|
|
}
|
|
}]
|
|
}
|
|
]
|
|
});
|