]> git.proxmox.com Git - pve-eslint.git/blobdiff - eslint/tests/lib/rules/no-return-await.js
import 8.41.0 source
[pve-eslint.git] / eslint / tests / lib / rules / no-return-await.js
index 508d7cb85289183bef55827ccf13ceb2ee9ae859..b9184a0a53243c3c1f8cfa0d4400aeed4110d89d 100644 (file)
@@ -16,8 +16,24 @@ const { RuleTester } = require("../../../lib/rule-tester");
 // Tests
 //------------------------------------------------------------------------------
 
-// pending https://github.com/eslint/espree/issues/304, the type should be "Keyword"
-const errors = [{ messageId: "redundantUseOfAwait", type: "Identifier" }];
+/**
+ * Creates the list of errors that should be found by this rule
+ * @param {Object} options Options for creating errors
+ * @param {string} options.suggestionOutput The suggested output
+ * @returns {Array} the list of errors
+ */
+function createErrorList({ suggestionOutput: output } = {}) {
+
+    // pending https://github.com/eslint/espree/issues/304, the type should be "Keyword"
+    return [{
+        messageId: "redundantUseOfAwait",
+        type: "Identifier",
+        suggestions: output ? [{
+            messageId: "removeAwait", output
+        }] : []
+    }];
+}
+
 
 const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2017 } });
 
@@ -138,99 +154,103 @@ ruleTester.run("no-return-await", rule, {
     invalid: [
         {
             code: "\nasync function foo() {\n\treturn await bar();\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn bar();\n}\n" })
+        },
+        {
+            code: "\nasync function foo() {\n\treturn await(bar());\n}\n",
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (a, await bar());\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (a, bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (a, b, await bar());\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (a, b, bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (a && await bar());\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (a && bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (a && b && await bar());\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (a && b && bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (a || await bar());\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (a || bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (a, b, (c, d, await bar()));\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (a, b, (c, d, bar()));\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (a, b, (c && await bar()));\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (a, b, (c && bar()));\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (await baz(), b, await bar());\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (await baz(), b, bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (baz() ? await bar() : b);\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (baz() ? bar() : b);\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (baz() ? a : await bar());\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (baz() ? a : bar());\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (baz() ? (a, await bar()) : b);\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (baz() ? (a, bar()) : b);\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (baz() ? a : (b, await bar()));\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (baz() ? a : (b, bar()));\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (baz() ? (a && await bar()) : b);\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (baz() ? (a && bar()) : b);\n}\n" })
         },
         {
             code: "\nasync function foo() {\n\treturn (baz() ? a : (b && await bar()));\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\n\treturn (baz() ? a : (b && bar()));\n}\n" })
         },
         {
             code: "\nasync () => { return await bar(); }\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => { return bar(); }\n" })
         },
         {
             code: "\nasync () => await bar()\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => bar()\n" })
         },
         {
             code: "\nasync () => (a, b, await bar())\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => (a, b, bar())\n" })
         },
         {
             code: "\nasync () => (a && await bar())\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => (a && bar())\n" })
         },
         {
             code: "\nasync () => (baz() ? await bar() : b)\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => (baz() ? bar() : b)\n" })
         },
         {
             code: "\nasync () => (baz() ? a : (b, await bar()))\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => (baz() ? a : (b, bar()))\n" })
         },
         {
             code: "\nasync () => (baz() ? a : (b && await bar()))\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => (baz() ? a : (b && bar()))\n" })
         },
         {
             code: "\nasync function foo() {\nif (a) {\n\t\tif (b) {\n\t\t\treturn await bar();\n\t\t}\n\t}\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync function foo() {\nif (a) {\n\t\tif (b) {\n\t\t\treturn bar();\n\t\t}\n\t}\n}\n" })
         },
         {
             code: "\nasync () => {\nif (a) {\n\t\tif (b) {\n\t\t\treturn await bar();\n\t\t}\n\t}\n}\n",
-            errors
+            errors: createErrorList({ suggestionOutput: "\nasync () => {\nif (a) {\n\t\tif (b) {\n\t\t\treturn bar();\n\t\t}\n\t}\n}\n" })
         },
         {
             code: `
@@ -241,7 +261,16 @@ ruleTester.run("no-return-await", rule, {
                 }
               }
             `,
-            errors
+            errors: createErrorList({
+                suggestionOutput: `
+              async function foo() {
+                try {}
+                finally {
+                  return bar();
+                }
+              }
+            `
+            })
         },
         {
             code: `
@@ -252,7 +281,16 @@ ruleTester.run("no-return-await", rule, {
                 }
               }
             `,
-            errors
+            errors: createErrorList({
+                suggestionOutput: `
+              async function foo() {
+                try {}
+                catch (e) {
+                  return bar();
+                }
+              }
+            `
+            })
         },
         {
             code: `
@@ -262,7 +300,15 @@ ruleTester.run("no-return-await", rule, {
                 }
               } catch (e) {}
             `,
-            errors
+            errors: createErrorList({
+                suggestionOutput: `
+              try {
+                async function foo() {
+                  return bar();
+                }
+              } catch (e) {}
+            `
+            })
         },
         {
             code: `
@@ -270,7 +316,13 @@ ruleTester.run("no-return-await", rule, {
                 async () => await bar();
               } catch (e) {}
             `,
-            errors
+            errors: createErrorList({
+                suggestionOutput: `
+              try {
+                async () => bar();
+              } catch (e) {}
+            `
+            })
         },
         {
             code: `
@@ -284,7 +336,64 @@ ruleTester.run("no-return-await", rule, {
                 }
               }
             `,
-            errors
+            errors: createErrorList({
+                suggestionOutput: `
+              async function foo() {
+                try {}
+                catch (e) {
+                  try {}
+                  catch (e) {
+                    return bar();
+                  }
+                }
+              }
+            `
+            })
+        },
+        {
+            code: `
+              async function foo() {
+                return await new Promise(resolve => {
+                  resolve(5);
+                });
+              }
+            `,
+            errors: createErrorList({
+                suggestionOutput: `
+              async function foo() {
+                return new Promise(resolve => {
+                  resolve(5);
+                });
+              }
+            `
+            })
+        },
+        {
+            code: `
+              async () => {
+                return await (
+                  foo()
+                )
+              };
+            `,
+            errors: createErrorList({
+                suggestionOutput: `
+              async () => {
+                return (
+                  foo()
+                )
+              };
+            `
+            })
+        },
+        {
+            code: `
+              async function foo() {
+                return await // Test
+                  5;
+              }
+            `,
+            errors: createErrorList()
         }
     ]
 });