]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-unused-expressions.js
6f49a0a24fba523a69185ea53c30da5c86ed4cdf
2 * @fileoverview Tests for no-unused-expressions rule.
3 * @author Michael Ficarra
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/no-unused-expressions"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester();
21 ruleTester
.run("no-unused-expressions", rule
, {
30 { code
: "a && a()", options
: [{ allowShortCircuit
: true }] },
31 { code
: "a() || (b = c)", options
: [{ allowShortCircuit
: true }] },
32 { code
: "a ? b() : c()", options
: [{ allowTernary
: true }] },
33 { code
: "a ? b() || (c = d) : e()", options
: [{ allowShortCircuit
: true, allowTernary
: true }] },
37 "\"directive one\"; \"directive two\"; f();",
38 "function foo() {\"use strict\"; return true; }",
39 { code
: "var foo = () => {\"use strict\"; return true; }", parserOptions
: { ecmaVersion
: 6 } },
40 "function foo() {\"directive one\"; \"directive two\"; f(); }",
41 "function foo() { var foo = \"use strict\"; return true; }",
43 code
: "function* foo(){ yield 0; }",
44 parserOptions
: { ecmaVersion
: 6 }
47 code
: "async function foo() { await 5; }",
48 parserOptions
: { ecmaVersion
: 8 }
51 code
: "async function foo() { await foo.bar; }",
52 parserOptions
: { ecmaVersion
: 8 }
55 code
: "async function foo() { bar && await baz; }",
56 options
: [{ allowShortCircuit
: true }],
57 parserOptions
: { ecmaVersion
: 8 }
60 code
: "async function foo() { foo ? await bar : await baz; }",
61 options
: [{ allowTernary
: true }],
62 parserOptions
: { ecmaVersion
: 8 }
65 code
: "tag`tagged template literal`",
66 options
: [{ allowTaggedTemplates
: true }],
67 parserOptions
: { ecmaVersion
: 6 }
70 code
: "shouldNotBeAffectedByAllowTemplateTagsOption()",
71 options
: [{ allowTaggedTemplates
: true }],
72 parserOptions
: { ecmaVersion
: 6 }
75 code
: "import(\"foo\")",
76 parserOptions
: { ecmaVersion
: 11 }
79 code
: "func?.(\"foo\")",
80 parserOptions
: { ecmaVersion
: 11 }
83 code
: "obj?.foo(\"bar\")",
84 parserOptions
: { ecmaVersion
: 11 }
90 parserOptions
: { ecmaFeatures
: { jsx
: true } }
94 parserOptions
: { ecmaFeatures
: { jsx
: true } }
97 code
: "var partial = <div />",
98 parserOptions
: { ecmaFeatures
: { jsx
: true } }
101 code
: "var partial = <div />",
102 options
: [{ enforceForJSX
: true }],
103 parserOptions
: { ecmaFeatures
: { jsx
: true } }
106 code
: "var partial = <></>",
107 options
: [{ enforceForJSX
: true }],
108 parserOptions
: { ecmaFeatures
: { jsx
: true } }
112 { code
: "0", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
113 { code
: "a", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
114 { code
: "f(), 0", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
115 { code
: "{0}", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
116 { code
: "[]", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
117 { code
: "a && b();", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
118 { code
: "a() || false", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
119 { code
: "a || (b = c)", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
120 { code
: "a ? b() || (c = d) : e", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
122 code
: "`untagged template literal`",
123 parserOptions
: { ecmaVersion
: 6 },
124 errors
: [{ messageId
: "unusedExpression" }]
127 code
: "tag`tagged template literal`",
128 parserOptions
: { ecmaVersion
: 6 },
129 errors
: [{ messageId
: "unusedExpression" }]
131 { code
: "a && b()", options
: [{ allowTernary
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
132 { code
: "a ? b() : c()", options
: [{ allowShortCircuit
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
133 { code
: "a || b", options
: [{ allowShortCircuit
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
134 { code
: "a() && b", options
: [{ allowShortCircuit
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
135 { code
: "a ? b : 0", options
: [{ allowTernary
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
136 { code
: "a ? b : c()", options
: [{ allowTernary
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
137 { code
: "foo.bar;", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
138 { code
: "!a", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
139 { code
: "+a", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
140 { code
: "\"directive one\"; f(); \"directive two\";", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
141 { code
: "function foo() {\"directive one\"; f(); \"directive two\"; }", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
142 { code
: "if (0) { \"not a directive\"; f(); }", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
143 { code
: "function foo() { var foo = true; \"use strict\"; }", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
144 { code
: "var foo = () => { var foo = true; \"use strict\"; }", parserOptions
: { ecmaVersion
: 6 }, errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
146 code
: "`untagged template literal`",
147 options
: [{ allowTaggedTemplates
: true }],
148 parserOptions
: { ecmaVersion
: 6 },
149 errors
: [{ messageId
: "unusedExpression" }]
152 code
: "`untagged template literal`",
153 options
: [{ allowTaggedTemplates
: false }],
154 parserOptions
: { ecmaVersion
: 6 },
155 errors
: [{ messageId
: "unusedExpression" }]
158 code
: "tag`tagged template literal`",
159 options
: [{ allowTaggedTemplates
: false }],
160 parserOptions
: { ecmaVersion
: 6 },
161 errors
: [{ messageId
: "unusedExpression" }]
167 parserOptions
: { ecmaVersion
: 2020 },
168 errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }]
171 code
: "obj?.foo.bar",
172 parserOptions
: { ecmaVersion
: 2020 },
173 errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }]
176 code
: "obj?.foo().bar",
177 parserOptions
: { ecmaVersion
: 2020 },
178 errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }]
184 options
: [{ enforceForJSX
: true }],
185 parserOptions
: { ecmaFeatures
: { jsx
: true } },
186 errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }]
190 options
: [{ enforceForJSX
: true }],
191 parserOptions
: { ecmaFeatures
: { jsx
: true } },
192 errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }]