Web Inspector: SyncTestSuite should complain if passed an async setup/test/teardown...
authorbburg@apple.com <bburg@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Dec 2017 23:13:04 +0000 (23:13 +0000)
committerbburg@apple.com <bburg@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Dec 2017 23:13:04 +0000 (23:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=180717

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* UserInterface/Test/TestSuite.js:
(SyncTestSuite.prototype.addTestCase):
Raise an exception if test/setup/teardown is an async function. It won't work.

LayoutTests:

Add new test cases for more strict requirements for test case arguments.

* inspector/unit-tests/sync-test-suite-expected.txt:
* inspector/unit-tests/sync-test-suite.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225814 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/inspector/unit-tests/sync-test-suite-expected.txt
LayoutTests/inspector/unit-tests/sync-test-suite.html
Source/WebInspectorUI/ChangeLog
Source/WebInspectorUI/UserInterface/Test/TestSuite.js

index 3cf559f..0a5a61d 100644 (file)
@@ -1,3 +1,15 @@
+2017-12-12  Brian Burg  <bburg@apple.com>
+
+        Web Inspector: SyncTestSuite should complain if passed an async setup/test/teardown function
+        https://bugs.webkit.org/show_bug.cgi?id=180717
+
+        Reviewed by Devin Rousso.
+
+        Add new test cases for more strict requirements for test case arguments.
+
+        * inspector/unit-tests/sync-test-suite-expected.txt:
+        * inspector/unit-tests/sync-test-suite.html:
+
 2017-12-12  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Expose promises on Animation interface
index 787d5bd..c27198b 100644 (file)
@@ -13,6 +13,9 @@ PASS: should not be able to specify non-Function `setup` parameter.
 PASS: should not be able to specify non-Function `teardown` parameter.
 PASS: should not be able to specify non-Function `teardown` parameter.
 PASS: should not be able to specify non-Function `teardown` parameter.
+PASS: should not be able to specify async `test` parameter.
+PASS: should not be able to specify async `setup` parameter.
+PASS: should not be able to specify async `teardown` parameter.
 PASS: should not be able to run empty test suite.
 
 == Running test suite: SyncTestSuite.RunTwiceSuite
index cbc06bf..9390e8d 100644 (file)
@@ -135,6 +135,36 @@ function test()
     } catch (e) {
         ProtocolTest.log("PASS: should not be able to specify non-Function `teardown` parameter.");
     }
+    try {
+        badArgsSuite.addTestCase({
+            name: "foo",
+            async test() {},
+        });
+        ProtocolTest.log("FAIL: should not be able to specify async `test` parameter.");
+    } catch (e) {
+        ProtocolTest.log("PASS: should not be able to specify async `test` parameter.");
+    }
+    try {
+        badArgsSuite.addTestCase({
+            name: "foo",
+            async setup() {},
+            test() {},
+        });
+        ProtocolTest.log("FAIL: should not be able to specify async `setup` parameter.");
+    } catch (e) {
+        ProtocolTest.log("PASS: should not be able to specify async `setup` parameter.");
+    }
+    try {
+        badArgsSuite.addTestCase({
+            name: "foo",
+            test() {},
+            async teardown() {},
+        });
+        ProtocolTest.log("FAIL: should not be able to specify async `teardown` parameter.");
+    } catch (e) {
+        ProtocolTest.log("PASS: should not be able to specify async `teardown` parameter.");
+    }
+
     let runEmptySuite = ProtocolTest.createSyncSuite("SyncTestSuite.RunEmptySuite");
     try {
         runEmptySuite.runTestCases();
index d8e5fd5..e9a5038 100644 (file)
@@ -1,5 +1,16 @@
 2017-12-12  Brian Burg  <bburg@apple.com>
 
+        Web Inspector: SyncTestSuite should complain if passed an async setup/test/teardown function
+        https://bugs.webkit.org/show_bug.cgi?id=180717
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Test/TestSuite.js:
+        (SyncTestSuite.prototype.addTestCase):
+        Raise an exception if test/setup/teardown is an async function. It won't work.
+
+2017-12-12  Brian Burg  <bburg@apple.com>
+
         Web Inspector: add InspectorTest.expectException() and use it
         https://bugs.webkit.org/show_bug.cgi?id=180719
 
index d62602f..06d52da 100644 (file)
@@ -175,6 +175,14 @@ AsyncTestSuite = class AsyncTestSuite extends TestSuite
 
 SyncTestSuite = class SyncTestSuite extends TestSuite
 {
+    addTestCase(testcase)
+    {
+        if ([testcase.setup, testcase.teardown, testcase.test].some((fn) => fn && fn[Symbol.toStringTag] === "AsyncFunction"))
+            throw new Error("Tried to pass a test case with an async `setup`, `test`, or `teardown` function, but this is a synchronous test suite.")
+
+        super.addTestCase(testcase);
+    }
+
     runTestCasesAndFinish()
     {
         this.runTestCases();