pve-eslint/eslint/tests/lib/rules/operator-linebreak.js
Thomas Lamprecht d3726936c1 import and build new upstream release 7.2.0
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-06-06 16:55:23 +02:00

644 lines
19 KiB
JavaScript

/**
* @fileoverview Operator linebreak rule tests
* @author Benoît Zugmeyer
*/
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const rule = require("../../../lib/rules/operator-linebreak"),
{ RuleTester } = require("../../../lib/rule-tester");
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester();
ruleTester.run("operator-linebreak", rule, {
valid: [
"1 + 1",
"1 + 1 + 1",
"1 +\n1",
"1 + (1 +\n1)",
"f(1 +\n1)",
"1 || 1",
"1 || \n1",
"a += 1",
"var a;",
"var o = \nsomething",
"o = \nsomething",
"'a\\\n' +\n 'c'",
"'a' +\n 'b\\\n'",
"(a\n) + b",
"answer = everything \n? 42 \n: foo;",
{ code: "answer = everything ?\n 42 :\n foo;", options: ["after"] },
{ code: "a ? 1 + 1\n:2", options: [null, { overrides: { "?": "after" } }] },
{ code: "a ?\n1 +\n 1\n:2", options: [null, { overrides: { "?": "after" } }] },
{ code: "o = 1 \n+ 1 - foo", options: [null, { overrides: { "+": "before" } }] },
{ code: "1\n+ 1", options: ["before"] },
{ code: "1 + 1\n+ 1", options: ["before"] },
{ code: "f(1\n+ 1)", options: ["before"] },
{ code: "1 \n|| 1", options: ["before"] },
{ code: "a += 1", options: ["before"] },
{ code: "answer = everything \n? 42 \n: foo;", options: ["before"] },
{ code: "1 + 1", options: ["none"] },
{ code: "1 + 1 + 1", options: ["none"] },
{ code: "1 || 1", options: ["none"] },
{ code: "a += 1", options: ["none"] },
{ code: "var a;", options: ["none"] },
{ code: "\n1 + 1", options: ["none"] },
{ code: "1 + 1\n", options: ["none"] },
{ code: "answer = everything ? 42 : foo;", options: ["none"] },
{ code: "answer = everything \n?\n 42 : foo;", options: [null, { overrides: { "?": "ignore" } }] },
{ code: "answer = everything ? 42 \n:\n foo;", options: [null, { overrides: { ":": "ignore" } }] }
],
invalid: [
{
code: "1\n+ 1",
output: "1 +\n1",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "1 + 2 \n + 3",
output: "1 + 2 + \n 3",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 2,
endLine: 2,
endColumn: 3
}]
},
{
code: "1\n+\n1",
output: "1+\n1",
errors: [{
messageId: "badLinebreak",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "1 + (1\n+ 1)",
output: "1 + (1 +\n1)",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "f(1\n+ 1);",
output: "f(1 +\n1);",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "1 \n || 1",
output: "1 || \n 1",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "||" },
type: "LogicalExpression",
line: 2,
column: 2,
endLine: 2,
endColumn: 4
}]
},
{
code: "a\n += 1",
output: "a +=\n 1",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "+=" },
type: "AssignmentExpression",
line: 2,
column: 2,
endLine: 2,
endColumn: 4
}]
},
{
code: "var a\n = 1",
output: "var a =\n 1",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "=" },
type: "VariableDeclarator",
line: 2,
column: 2,
endLine: 2,
endColumn: 3
}]
},
{
code: "(b)\n*\n(c)",
output: "(b)*\n(c)",
errors: [{
messageId: "badLinebreak",
data: { operator: "*" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "answer = everything ?\n 42 :\n foo;",
output: "answer = everything\n ? 42\n : foo;",
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "?" },
type: "ConditionalExpression",
line: 1,
column: 21,
endLine: 1,
endColumn: 22
},
{
messageId: "operatorAtBeginning",
data: { operator: ":" },
type: "ConditionalExpression",
line: 2,
column: 6,
endLine: 2,
endColumn: 7
}]
},
{
code: "answer = everything \n? 42 \n: foo;",
output: "answer = everything ? \n42 : \nfoo;",
options: ["after"],
errors: [{
messageId: "operatorAtEnd",
data: { operator: "?" },
type: "ConditionalExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
},
{
messageId: "operatorAtEnd",
data: { operator: ":" },
type: "ConditionalExpression",
line: 3,
column: 1,
endLine: 3,
endColumn: 2
}]
},
{
code: "1 +\n1",
output: "1\n+ 1",
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "+" },
type: "BinaryExpression",
line: 1,
column: 3,
endLine: 1,
endColumn: 4
}]
},
{
code: "f(1 +\n1);",
output: "f(1\n+ 1);",
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "+" },
type: "BinaryExpression",
line: 1,
column: 5,
endLine: 1,
endColumn: 6
}]
},
{
code: "1 || \n 1",
output: "1 \n || 1",
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "||" },
type: "LogicalExpression",
line: 1,
column: 3,
endLine: 1,
endColumn: 5
}]
},
{
code: "a += \n1",
output: "a \n+= 1",
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "+=" },
type: "AssignmentExpression",
line: 1,
column: 3,
endLine: 1,
endColumn: 5
}]
},
{
code: "var a = \n1",
output: "var a \n= 1",
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "=" },
type: "VariableDeclarator",
line: 1,
column: 7,
endLine: 1,
endColumn: 8
}]
},
{
code: "answer = everything ?\n 42 :\n foo;",
output: "answer = everything\n ? 42\n : foo;",
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "?" },
type: "ConditionalExpression",
line: 1,
column: 21,
endLine: 1,
endColumn: 22
},
{
messageId: "operatorAtBeginning",
data: { operator: ":" },
type: "ConditionalExpression",
line: 2,
column: 6,
endLine: 2,
endColumn: 7
}]
},
{
code: "1 +\n1",
output: "1 +1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "+" },
type: "BinaryExpression",
line: 1,
column: 3,
endLine: 1,
endColumn: 4
}]
},
{
code: "1\n+1",
output: "1+1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "f(1 +\n1);",
output: "f(1 +1);",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "+" },
type: "BinaryExpression",
line: 1,
column: 5,
endLine: 1,
endColumn: 6
}]
},
{
code: "f(1\n+ 1);",
output: "f(1+ 1);",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "1 || \n 1",
output: "1 || 1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "||" },
type: "LogicalExpression",
line: 1,
column: 3,
endLine: 1,
endColumn: 5
}]
},
{
code: "1 \n || 1",
output: "1 || 1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "||" },
type: "LogicalExpression",
line: 2,
column: 2,
endLine: 2,
endColumn: 4
}]
},
{
code: "a += \n1",
output: "a += 1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "+=" },
type: "AssignmentExpression",
line: 1,
column: 3,
endLine: 1,
endColumn: 5
}]
},
{
code: "a \n+= 1",
output: "a += 1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "+=" },
type: "AssignmentExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 3
}]
},
{
code: "var a = \n1",
output: "var a = 1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "=" },
type: "VariableDeclarator",
line: 1,
column: 7,
endLine: 1,
endColumn: 8
}]
},
{
code: "var a \n = 1",
output: "var a = 1",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "=" },
type: "VariableDeclarator",
line: 2,
column: 2,
endLine: 2,
endColumn: 3
}]
},
{
code: "answer = everything ?\n 42 \n: foo;",
output: "answer = everything ? 42 : foo;",
options: ["none"],
errors: [{
messageId: "noLinebreak",
data: { operator: "?" },
type: "ConditionalExpression",
line: 1,
column: 21,
endLine: 1,
endColumn: 22
},
{
messageId: "noLinebreak",
data: { operator: ":" },
type: "ConditionalExpression",
line: 3,
column: 1,
endLine: 3,
endColumn: 2
}]
},
{
code: "answer = everything\n?\n42 + 43\n:\nfoo;",
output: "answer = everything?42 + 43:foo;",
options: ["none"],
errors: [{
messageId: "badLinebreak",
data: { operator: "?" },
type: "ConditionalExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
},
{
messageId: "badLinebreak",
data: { operator: ":" },
type: "ConditionalExpression",
line: 4,
column: 1,
endLine: 4,
endColumn: 2
}]
},
{
code: "a = b \n >>> \n c;",
output: "a = b >>> \n c;",
errors: [{
messageId: "badLinebreak",
data: { operator: ">>>" },
type: "BinaryExpression",
line: 2,
column: 3,
endLine: 2,
endColumn: 6
}]
},
{
code: "foo +=\n42;\nbar -=\n12\n+ 5;",
output: "foo +=42;\nbar -=\n12\n+ 5;",
options: ["after", { overrides: { "+=": "none", "+": "before" } }],
errors: [{
messageId: "noLinebreak",
data: { operator: "+=" },
type: "AssignmentExpression",
line: 1,
column: 5,
endLine: 1,
endColumn: 7
}]
},
{
code: "answer = everything\n?\n42\n:\nfoo;",
output: "answer = everything\n?\n42\n:foo;",
options: ["after", { overrides: { "?": "ignore", ":": "before" } }],
errors: [{
messageId: "badLinebreak",
data: { operator: ":" },
type: "ConditionalExpression",
line: 4,
column: 1,
endLine: 4,
endColumn: 2
}]
},
{
// Insert an additional space to avoid changing the operator to ++ or --.
code: "foo+\n+bar",
output: "foo\n+ +bar",
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "+" },
type: "BinaryExpression",
line: 1,
column: 4,
endLine: 1,
endColumn: 5
}]
},
{
code: "foo //comment\n&& bar",
output: "foo && //comment\nbar",
errors: [{
messageId: "operatorAtEnd",
data: { operator: "&&" },
type: "LogicalExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 3
}]
},
{
code: "foo//comment\n+\nbar",
output: null,
errors: [{
messageId: "badLinebreak",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "foo\n+//comment\nbar",
output: null,
options: ["before"],
errors: [{
messageId: "badLinebreak",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "foo /* a */ \n+ /* b */ bar",
output: null, // Not fixed because there is a comment on both sides
errors: [{
messageId: "operatorAtEnd",
data: { operator: "+" },
type: "BinaryExpression",
line: 2,
column: 1,
endLine: 2,
endColumn: 2
}]
},
{
code: "foo /* a */ +\n /* b */ bar",
output: null, // Not fixed because there is a comment on both sides
options: ["before"],
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "+" },
type: "BinaryExpression",
line: 1,
column: 13,
endLine: 1,
endColumn: 14
}]
},
{
code: "foo ??\n bar",
output: "foo\n ?? bar",
options: ["after", { overrides: { "??": "before" } }],
parserOptions: { ecmaVersion: 2020 },
errors: [{
messageId: "operatorAtBeginning",
data: { operator: "??" }
}]
}
]
});