]> git.proxmox.com Git - pve-eslint.git/blobdiff - eslint/tests/lib/rules/lines-between-class-members.js
import 8.3.0 source
[pve-eslint.git] / eslint / tests / lib / rules / lines-between-class-members.js
index e4b1c0c092ff10b871cccc712a333b3d283b120d..feb9c085e37eca64b0519e81b7b566b764067ed1 100644 (file)
@@ -15,6 +15,7 @@ const { RuleTester } = require("../../../lib/rule-tester");
 //------------------------------------------------------------------------------
 // Helpers
 //------------------------------------------------------------------------------
+
 const alwaysError = { messageId: "always" };
 const neverError = { messageId: "never" };
 
@@ -22,7 +23,7 @@ const neverError = { messageId: "never" };
 // Tests
 //------------------------------------------------------------------------------
 
-const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
+const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2022 } });
 
 ruleTester.run("lines-between-class-members", rule, {
     valid: [
@@ -46,6 +47,8 @@ ruleTester.run("lines-between-class-members", rule, {
         "class foo{ bar(){}\n\n;;baz(){}}",
         "class foo{ bar(){};\n\nbaz(){}}",
 
+        "class C {\naaa;\n\n#bbb;\n\nccc(){}\n\n#ddd(){}\n}",
+
         { code: "class foo{ bar(){}\nbaz(){}}", options: ["never"] },
         { code: "class foo{ bar(){}\n/*comments*/baz(){}}", options: ["never"] },
         { code: "class foo{ bar(){}\n//comments\nbaz(){}}", options: ["never"] },
@@ -58,7 +61,13 @@ ruleTester.run("lines-between-class-members", rule, {
         { code: "class foo{ bar(){}\n\n//comments\nbaz(){}}", options: ["always"] },
 
         { code: "class foo{ bar(){}\nbaz(){}}", options: ["always", { exceptAfterSingleLine: true }] },
-        { code: "class foo{ bar(){\n}\n\nbaz(){}}", options: ["always", { exceptAfterSingleLine: true }] }
+        { code: "class foo{ bar(){\n}\n\nbaz(){}}", options: ["always", { exceptAfterSingleLine: true }] },
+        { code: "class foo{\naaa;\n#bbb;\nccc(){\n}\n\n#ddd(){\n}\n}", options: ["always", { exceptAfterSingleLine: true }] },
+
+        // semicolon-less style (semicolons are at the beginning of lines)
+        { code: "class C { foo\n\n;bar }", options: ["always"] },
+        { code: "class C { foo\n;bar }", options: ["always", { exceptAfterSingleLine: true }] },
+        { code: "class C { foo\n;bar }", options: ["never"] }
     ],
     invalid: [
         {
@@ -141,6 +150,64 @@ ruleTester.run("lines-between-class-members", rule, {
             output: "class A {\nfoo() {}\n\n/* comment */;\n;\nbar() {}\n}",
             options: ["always"],
             errors: [alwaysError]
+        }, {
+            code: "class C {\nfield1\nfield2\n}",
+            output: "class C {\nfield1\n\nfield2\n}",
+            options: ["always"],
+            errors: [alwaysError]
+        }, {
+            code: "class C {\n#field1\n#field2\n}",
+            output: "class C {\n#field1\n\n#field2\n}",
+            options: ["always"],
+            errors: [alwaysError]
+        }, {
+            code: "class C {\nfield1\n\nfield2\n}",
+            output: "class C {\nfield1\nfield2\n}",
+            options: ["never"],
+            errors: [neverError]
+        }, {
+            code: "class C {\nfield1 = () => {\n}\nfield2\nfield3\n}",
+            output: "class C {\nfield1 = () => {\n}\n\nfield2\nfield3\n}",
+            options: ["always", { exceptAfterSingleLine: true }],
+            errors: [alwaysError]
+        },
+        {
+            code: "class C { foo;bar }",
+            output: "class C { foo;\nbar }",
+            options: ["always"],
+            errors: [alwaysError]
+        },
+        {
+            code: "class C { foo;\nbar; }",
+            output: "class C { foo;\n\nbar; }",
+            options: ["always"],
+            errors: [alwaysError]
+        },
+        {
+            code: "class C { foo;\n;bar }",
+            output: "class C { foo;\n\n;bar }",
+            options: ["always"],
+            errors: [alwaysError]
+        },
+
+        // semicolon-less style (semicolons are at the beginning of lines)
+        {
+            code: "class C { foo\n;bar }",
+            output: "class C { foo\n\n;bar }",
+            options: ["always"],
+            errors: [alwaysError]
+        },
+        {
+            code: "class C { foo\n\n;bar }",
+            output: "class C { foo\n;bar }",
+            options: ["never"],
+            errors: [neverError]
+        },
+        {
+            code: "class C { foo\n;;bar }",
+            output: "class C { foo\n\n;;bar }",
+            options: ["always"],
+            errors: [alwaysError]
         }
     ]
 });