Bug 1478945 - Refactor test_xpcshell_debugging.js to use async/await instead of callbacks. r=jdescottes draft
authorAlexandre Poirot <poirot.alex@gmail.com>
Tue, 31 Jul 2018 08:46:07 -0700
changeset 824680 5a2296e1bc6c9362ddf5ede761791432195f130f
parent 824679 3ab1224a8264f0226b2313a90d567df35b44ad67
child 824681 75d5cb94dc3a2e3df85bacc3bb0292309b3b7bd7
push id117977
push userbmo:poirot.alex@gmail.com
push dateTue, 31 Jul 2018 17:10:58 +0000
reviewersjdescottes
bugs1478945
milestone63.0a1
Bug 1478945 - Refactor test_xpcshell_debugging.js to use async/await instead of callbacks. r=jdescottes MozReview-Commit-ID: 3QmGlX70BVz
devtools/server/tests/unit/test_xpcshell_debugging.js
--- a/devtools/server/tests/unit/test_xpcshell_debugging.js
+++ b/devtools/server/tests/unit/test_xpcshell_debugging.js
@@ -2,53 +2,53 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 /* eslint-disable no-shadow, max-nested-callbacks */
 
 "use strict";
 
 // Test the xpcshell-test debug support.  Ideally we should have this test
 // next to the xpcshell support code, but that's tricky...
 
-function run_test() {
+add_task(async function() {
   const testFile = do_get_file("xpcshell_debugging_script.js");
 
   // _setupDebuggerServer is from xpcshell-test's head.js
   /* global _setupDebuggerServer */
   let testResumed = false;
   const DebuggerServer = _setupDebuggerServer([testFile.path], () => {
     testResumed = true;
   });
   const transport = DebuggerServer.connectPipe();
   const client = new DebuggerClient(transport);
-  client.connect().then(() => {
-    // Even though we have no tabs, listTabs gives us the chromeDebugger.
-    client.getProcess().then(response => {
-      const actor = response.form.actor;
-      client.attachTab(actor).then(([response, tabClient]) => {
-        tabClient.attachThread(null).then(([response, threadClient]) => {
-          threadClient.addOneTimeListener("paused", (event, packet) => {
-            equal(packet.why.type, "breakpoint",
-                "yay - hit the breakpoint at the first line in our script");
-            // Resume again - next stop should be our "debugger" statement.
-            threadClient.addOneTimeListener("paused", (event, packet) => {
-              equal(packet.why.type, "debuggerStatement",
-                    "yay - hit the 'debugger' statement in our script");
-              threadClient.resume(() => {
-                finishClient(client);
-              });
-            });
-            threadClient.resume();
-          });
-          // tell the thread to do the initial resume.  This would cause the
-          // xpcshell test harness to resume and load the file under test.
-          threadClient.resume(response => {
-            // should have been told to resume the test itself.
-            ok(testResumed);
-            // Now load our test script.
-            load(testFile.path);
-            // and our "paused" listener above should get hit.
-          });
-        });
+  await client.connect();
+  // Even though we have no tabs, listTabs gives us the chromeDebugger.
+  const response = await client.getProcess();
+  const actor = response.form.actor;
+  const [, tabClient] = await client.attachTab(actor);
+  const [, threadClient] = await tabClient.attachThread(null);
+  const onResumed = new Promise(resolve => {
+    threadClient.addOneTimeListener("paused", (event, packet) => {
+      equal(packet.why.type, "breakpoint",
+          "yay - hit the breakpoint at the first line in our script");
+      // Resume again - next stop should be our "debugger" statement.
+      threadClient.addOneTimeListener("paused", (event, packet) => {
+        equal(packet.why.type, "debuggerStatement",
+              "yay - hit the 'debugger' statement in our script");
+        threadClient.resume(resolve);
       });
+      threadClient.resume();
     });
   });
-  do_test_pending();
-}
+
+  // tell the thread to do the initial resume.  This would cause the
+  // xpcshell test harness to resume and load the file under test.
+  threadClient.resume(() => {
+    // should have been told to resume the test itself.
+    ok(testResumed);
+    // Now load our test script.
+    load(testFile.path);
+    // and our "paused" listener above should get hit.
+  });
+
+  await onResumed;
+
+  finishClient(client);
+});