]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-return-await.js
first commit
[pve-eslint.git] / eslint / tests / lib / rules / no-return-await.js
1 /**
2 * @fileoverview Disallows unnecessary `return await`
3 * @author Jordan Harband
4 */
5 "use strict";
6
7 //------------------------------------------------------------------------------
8 // Requirements
9 //------------------------------------------------------------------------------
10
11 const rule = require("../../../lib/rules/no-return-await");
12 const { RuleTester } = require("../../../lib/rule-tester");
13
14
15 //------------------------------------------------------------------------------
16 // Tests
17 //------------------------------------------------------------------------------
18
19 // pending https://github.com/eslint/espree/issues/304, the type should be "Keyword"
20 const errors = [{ messageId: "redundantUseOfAwait", type: "Identifier" }];
21
22 const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2017 } });
23
24 ruleTester.run("no-return-await", rule, {
25
26 valid: [
27 "\nasync function foo() {\n\tawait bar(); return;\n}\n",
28 "\nasync function foo() {\n\tconst x = await bar(); return x;\n}\n",
29 "\nasync () => { return bar(); }\n",
30 "\nasync () => bar()\n",
31 "\nasync function foo() {\nif (a) {\n\t\tif (b) {\n\t\t\treturn bar();\n\t\t}\n\t}\n}\n",
32 "\nasync () => {\nif (a) {\n\t\tif (b) {\n\t\t\treturn bar();\n\t\t}\n\t}\n}\n",
33 "\nasync function foo() {\n\treturn (await bar() && a);\n}\n",
34 "\nasync function foo() {\n\treturn (await bar() || a);\n}\n",
35 "\nasync function foo() {\n\treturn (a && await baz() && b);\n}\n",
36 "\nasync function foo() {\n\treturn (await bar(), a);\n}\n",
37 "\nasync function foo() {\n\treturn (await baz(), await bar(), a);\n}\n",
38 "\nasync function foo() {\n\treturn (a, b, (await bar(), c));\n}\n",
39 "\nasync function foo() {\n\treturn (await bar() ? a : b);\n}\n",
40 "\nasync function foo() {\n\treturn ((a && await bar()) ? b : c);\n}\n",
41 "\nasync function foo() {\n\treturn (baz() ? (await bar(), a) : b);\n}\n",
42 "\nasync function foo() {\n\treturn (baz() ? (await bar() && a) : b);\n}\n",
43 "\nasync function foo() {\n\treturn (baz() ? a : (await bar(), b));\n}\n",
44 "\nasync function foo() {\n\treturn (baz() ? a : (await bar() && b));\n}\n",
45 "\nasync () => (await bar(), a)\n",
46 "\nasync () => (await bar() && a)\n",
47 "\nasync () => (await bar() || a)\n",
48 "\nasync () => (a && await bar() && b)\n",
49 "\nasync () => (await baz(), await bar(), a)\n",
50 "\nasync () => (a, b, (await bar(), c))\n",
51 "\nasync () => (await bar() ? a : b)\n",
52 "\nasync () => ((a && await bar()) ? b : c)\n",
53 "\nasync () => (baz() ? (await bar(), a) : b)\n",
54 "\nasync () => (baz() ? (await bar() && a) : b)\n",
55 "\nasync () => (baz() ? a : (await bar(), b))\n",
56 "\nasync () => (baz() ? a : (await bar() && b))\n",
57 `
58 async function foo() {
59 try {
60 return await bar();
61 } catch (e) {
62 baz();
63 }
64 }
65 `,
66 `
67 async function foo() {
68 try {
69 return await bar();
70 } finally {
71 baz();
72 }
73 }
74 `,
75 `
76 async function foo() {
77 try {}
78 catch (e) {
79 return await bar();
80 } finally {
81 baz();
82 }
83 }
84 `,
85 `
86 async function foo() {
87 try {
88 try {}
89 finally {
90 return await bar();
91 }
92 } finally {
93 baz();
94 }
95 }
96 `,
97 `
98 async function foo() {
99 try {
100 try {}
101 catch (e) {
102 return await bar();
103 }
104 } finally {
105 baz();
106 }
107 }
108 `,
109 `
110 async function foo() {
111 try {
112 return (a, await bar());
113 } catch (e) {
114 baz();
115 }
116 }
117 `,
118 `
119 async function foo() {
120 try {
121 return (qux() ? await bar() : b);
122 } catch (e) {
123 baz();
124 }
125 }
126 `,
127 `
128 async function foo() {
129 try {
130 return (a && await bar());
131 } catch (e) {
132 baz();
133 }
134 }
135 `
136 ],
137
138 invalid: [
139 {
140 code: "\nasync function foo() {\n\treturn await bar();\n}\n",
141 errors
142 },
143 {
144 code: "\nasync function foo() {\n\treturn (a, await bar());\n}\n",
145 errors
146 },
147 {
148 code: "\nasync function foo() {\n\treturn (a, b, await bar());\n}\n",
149 errors
150 },
151 {
152 code: "\nasync function foo() {\n\treturn (a && await bar());\n}\n",
153 errors
154 },
155 {
156 code: "\nasync function foo() {\n\treturn (a && b && await bar());\n}\n",
157 errors
158 },
159 {
160 code: "\nasync function foo() {\n\treturn (a || await bar());\n}\n",
161 errors
162 },
163 {
164 code: "\nasync function foo() {\n\treturn (a, b, (c, d, await bar()));\n}\n",
165 errors
166 },
167 {
168 code: "\nasync function foo() {\n\treturn (a, b, (c && await bar()));\n}\n",
169 errors
170 },
171 {
172 code: "\nasync function foo() {\n\treturn (await baz(), b, await bar());\n}\n",
173 errors
174 },
175 {
176 code: "\nasync function foo() {\n\treturn (baz() ? await bar() : b);\n}\n",
177 errors
178 },
179 {
180 code: "\nasync function foo() {\n\treturn (baz() ? a : await bar());\n}\n",
181 errors
182 },
183 {
184 code: "\nasync function foo() {\n\treturn (baz() ? (a, await bar()) : b);\n}\n",
185 errors
186 },
187 {
188 code: "\nasync function foo() {\n\treturn (baz() ? a : (b, await bar()));\n}\n",
189 errors
190 },
191 {
192 code: "\nasync function foo() {\n\treturn (baz() ? (a && await bar()) : b);\n}\n",
193 errors
194 },
195 {
196 code: "\nasync function foo() {\n\treturn (baz() ? a : (b && await bar()));\n}\n",
197 errors
198 },
199 {
200 code: "\nasync () => { return await bar(); }\n",
201 errors
202 },
203 {
204 code: "\nasync () => await bar()\n",
205 errors
206 },
207 {
208 code: "\nasync () => (a, b, await bar())\n",
209 errors
210 },
211 {
212 code: "\nasync () => (a && await bar())\n",
213 errors
214 },
215 {
216 code: "\nasync () => (baz() ? await bar() : b)\n",
217 errors
218 },
219 {
220 code: "\nasync () => (baz() ? a : (b, await bar()))\n",
221 errors
222 },
223 {
224 code: "\nasync () => (baz() ? a : (b && await bar()))\n",
225 errors
226 },
227 {
228 code: "\nasync function foo() {\nif (a) {\n\t\tif (b) {\n\t\t\treturn await bar();\n\t\t}\n\t}\n}\n",
229 errors
230 },
231 {
232 code: "\nasync () => {\nif (a) {\n\t\tif (b) {\n\t\t\treturn await bar();\n\t\t}\n\t}\n}\n",
233 errors
234 },
235 {
236 code: `
237 async function foo() {
238 try {}
239 finally {
240 return await bar();
241 }
242 }
243 `,
244 errors
245 },
246 {
247 code: `
248 async function foo() {
249 try {}
250 catch (e) {
251 return await bar();
252 }
253 }
254 `,
255 errors
256 },
257 {
258 code: `
259 try {
260 async function foo() {
261 return await bar();
262 }
263 } catch (e) {}
264 `,
265 errors
266 },
267 {
268 code: `
269 try {
270 async () => await bar();
271 } catch (e) {}
272 `,
273 errors
274 },
275 {
276 code: `
277 async function foo() {
278 try {}
279 catch (e) {
280 try {}
281 catch (e) {
282 return await bar();
283 }
284 }
285 }
286 `,
287 errors
288 }
289 ]
290 });