]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-unused-expressions.js
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 }
76 { code
: "0", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
77 { code
: "a", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
78 { code
: "f(), 0", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
79 { code
: "{0}", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
80 { code
: "[]", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
81 { code
: "a && b();", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
82 { code
: "a() || false", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
83 { code
: "a || (b = c)", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
84 { code
: "a ? b() || (c = d) : e", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
86 code
: "`untagged template literal`",
87 parserOptions
: { ecmaVersion
: 6 },
88 errors
: [{ messageId
: "unusedExpression" }]
91 code
: "tag`tagged template literal`",
92 parserOptions
: { ecmaVersion
: 6 },
93 errors
: [{ messageId
: "unusedExpression" }]
95 { code
: "a && b()", options
: [{ allowTernary
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
96 { code
: "a ? b() : c()", options
: [{ allowShortCircuit
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
97 { code
: "a || b", options
: [{ allowShortCircuit
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
98 { code
: "a() && b", options
: [{ allowShortCircuit
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
99 { code
: "a ? b : 0", options
: [{ allowTernary
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
100 { code
: "a ? b : c()", options
: [{ allowTernary
: true }], errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
101 { code
: "foo.bar;", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
102 { code
: "!a", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
103 { code
: "+a", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
104 { code
: "\"directive one\"; f(); \"directive two\";", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
105 { code
: "function foo() {\"directive one\"; f(); \"directive two\"; }", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
106 { code
: "if (0) { \"not a directive\"; f(); }", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
107 { code
: "function foo() { var foo = true; \"use strict\"; }", errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
108 { code
: "var foo = () => { var foo = true; \"use strict\"; }", parserOptions
: { ecmaVersion
: 6 }, errors
: [{ messageId
: "unusedExpression", type
: "ExpressionStatement" }] },
110 code
: "`untagged template literal`",
111 options
: [{ allowTaggedTemplates
: true }],
112 parserOptions
: { ecmaVersion
: 6 },
113 errors
: [{ messageId
: "unusedExpression" }]
116 code
: "`untagged template literal`",
117 options
: [{ allowTaggedTemplates
: false }],
118 parserOptions
: { ecmaVersion
: 6 },
119 errors
: [{ messageId
: "unusedExpression" }]
122 code
: "tag`tagged template literal`",
123 options
: [{ allowTaggedTemplates
: false }],
124 parserOptions
: { ecmaVersion
: 6 },
125 errors
: [{ messageId
: "unusedExpression" }]