Review feedback: use async/await, not promises, in tests draft
authorJared Hirsch <ohai@6a68.net>
Tue, 31 Jul 2018 19:20:04 -0700
changeset 825571 e39a36937d39b7fd6eab45f56795e8b798d30f32
parent 825570 4c8130591bc33102a35f22e961e8062c80613a00
child 825572 cba4e7ccec9595e705e2f0c0f6b6a6f1ea29e179
push id118135
push userbmo:jhirsch@mozilla.com
push dateThu, 02 Aug 2018 00:12:25 +0000
milestone63.0a1
Review feedback: use async/await, not promises, in tests MozReview-Commit-ID: 31Hd3NJ4DmG
toolkit/components/extensions/test/xpcshell/test_ext_telemetry.js
--- a/toolkit/components/extensions/test/xpcshell/test_ext_telemetry.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_telemetry.js
@@ -1,15 +1,15 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/TelemetryArchive.jsm", this);
 
 function createExtension(backgroundScript, permissions) {
   let extensionData = {
-    background: `(${backgroundScript})()`,
+    background: backgroundScript,
     manifest: {permissions},
   };
   return ExtensionTestUtils.loadExtension(extensionData);
 }
 
 async function run(test) {
   let extension = createExtension(test.backgroundScript, test.permissions || ["telemetry"]);
   await extension.startup();
@@ -25,34 +25,31 @@ add_task(async function test_telemetry_w
     },
     permissions: [],
     doneSignal: "telemetry_permission",
   });
 });
 
 add_task(async function test_telemetry_scalar_add() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.scalarAdd("telemetry.test.unsigned_int_kind", 1)
-        .then(() => {
-          browser.test.notifyPass("scalar_add");
-        });
+    backgroundScript: async () => {
+      // TODO: verify value
+      await browser.telemetry.scalarAdd("telemetry.test.unsigned_int_kind", 1);
+      browser.test.notifyPass("scalar_add");
     },
     doneSignal: "scalar_add",
   });
 });
 
 add_task(async function test_telemetry_scalar_add_unknown_name() {
-  let {messages} = await promiseConsoleOutput(async function() {
+  let {messages} = await promiseConsoleOutput(async () => {
     await run({
-      backgroundScript: () => {
-        browser.telemetry.scalarAdd("telemetry.test.does_not_exist", 1)
-          .then(() => {
-            browser.test.notifyPass("scalar_add_unknown_name");
-          });
+      backgroundScript: async () => {
+        await browser.telemetry.scalarAdd("telemetry.test.does_not_exist", 1);
+        browser.test.notifyPass("scalar_add_unknown_name");
       },
       doneSignal: "scalar_add_unknown_name",
     });
   });
 
   messages = messages.filter(msg => /telemetry.test.does_not_exist - Unknown scalar./);
   equal(messages.length, 1, "Telemetry should throw if an unknown scalar is incremented");
 });
@@ -69,79 +66,69 @@ add_task(async function test_telemetry_s
     },
     doneSignal: "scalar_add_illegal_value",
   });
 });
 
 add_task(async function test_telemetry_scalar_add_invalid_keyed_scalar() {
   let {messages} = await promiseConsoleOutput(async function() {
     await run({
-      backgroundScript: () => {
-        browser.telemetry.scalarAdd("telemetry.test.keyed_unsigned_int", 1)
-          .then(() => {
-            browser.test.notifyPass("scalar_add_invalid_keyed_scalar");
-          });
+      backgroundScript: async () => {
+        await browser.telemetry.scalarAdd("telemetry.test.keyed_unsigned_int", 1);
+        browser.test.notifyPass("scalar_add_invalid_keyed_scalar");
       },
       doneSignal: "scalar_add_invalid_keyed_scalar",
     });
   });
 
   messages = messages.filter(msg => /Attempting to manage a keyed scalar as a scalar/);
   equal(messages.length, 1, "Telemetry should throw if a keyed scalar is incremented");
 });
 
 add_task(async function test_telemetry_scalar_set() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.scalarSet("telemetry.test.boolean_kind", true)
-        .then(() => {
-          browser.test.notifyPass("scalar_set");
-        });
+    backgroundScript: async () => {
+      await browser.telemetry.scalarSet("telemetry.test.boolean_kind", true);
+      browser.test.notifyPass("scalar_set");
     },
     doneSignal: "scalar_set",
   });
 });
 
 add_task(async function test_telemetry_scalar_set_unknown_name() {
   let {messages} = await promiseConsoleOutput(async function() {
     await run({
-      backgroundScript: () => {
-        browser.telemetry.scalarSet("telemetry.test.does_not_exist", true)
-          .then(() => {
-            browser.test.notifyPass("scalar_set_unknown_name");
-          });
+      backgroundScript: async () => {
+        await browser.telemetry.scalarSet("telemetry.test.does_not_exist", true);
+        browser.test.notifyPass("scalar_set_unknown_name");
       },
       doneSignal: "scalar_set_unknown_name",
     });
   });
 
   messages = messages.filter(msg => /Unknown scalar/);
   equal(messages.length, 1, "Telemetry should throw if an unknown scalar is set");
 });
 
 add_task(async function test_telemetry_scalar_set_maximum() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.scalarSetMaximum("telemetry.test.unsigned_int_kind", 123)
-        .then(() => {
-          browser.test.notifyPass("scalar_set_maximum");
-        });
+    backgroundScript: async () => {
+      await browser.telemetry.scalarSetMaximum("telemetry.test.unsigned_int_kind", 123);
+      browser.test.notifyPass("scalar_set_maximum");
     },
     doneSignal: "scalar_set_maximum",
   });
 });
 
 add_task(async function test_telemetry_scalar_set_maximum_unknown_name() {
   let {messages} = await promiseConsoleOutput(async function() {
     await run({
-      backgroundScript: () => {
-        browser.telemetry.scalarSetMaximum("telemetry.test.does_not_exist", 1)
-        .then(() => {
-          browser.test.notifyPass("scalar_set_maximum_unknown_name");
-        });
+      backgroundScript: async () => {
+        await browser.telemetry.scalarSetMaximum("telemetry.test.does_not_exist", 1);
+        browser.test.notifyPass("scalar_set_maximum_unknown_name");
       },
       doneSignal: "scalar_set_maximum_unknown_name",
     });
   });
 
   messages = messages.filter(msg => /Unknown scalar/);
   equal(messages.length, 1, "Telemetry should throw if an unknown scalar is set");
 });
@@ -158,158 +145,144 @@ add_task(async function test_telemetry_s
     doneSignal: "scalar_set_maximum_illegal_value",
   });
 });
 
 add_task(async function test_telemetry_record_event() {
   Services.telemetry.setEventRecordingEnabled("telemetry.test", true);
 
   await run({
-    backgroundScript: () => {
-      browser.telemetry.recordEvent("telemetry.test", "test1", "object1")
-        .then(() => {
-          browser.test.notifyPass("record_event_ok");
-        });
+    backgroundScript: async () => {
+      await browser.telemetry.recordEvent("telemetry.test", "test1", "object1");
+      browser.test.notifyPass("record_event_ok");
     },
     doneSignal: "record_event_ok",
   });
 
   let events = Services.telemetry.snapshotEvents(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, true);
   equal(events.parent.length, 1);
   equal(events.parent[0][1], "telemetry.test");
 
   Services.telemetry.clearEvents();
 });
 
 add_task(async function test_telemetry_register_scalars_string() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.registerScalars("telemetry.test.dynamic", {
+    backgroundScript: async () => {
+      await browser.telemetry.registerScalars("telemetry.test.dynamic", {
         "webext_string": {
           kind: browser.telemetry.ScalarType.STRING,
           keyed: false,
           record_on_release: true,
         },
-      }).then(() => {
-        return browser.telemetry.scalarSet("telemetry.test.dynamic.webext_string", "hello");
-      }).then(() => {
-        browser.test.notifyPass("register_scalars_string");
       });
+      await browser.telemetry.scalarSet("telemetry.test.dynamic.webext_string", "hello");
+      browser.test.notifyPass("register_scalars_string");
     },
     doneSignal: "register_scalars_string",
   });
 
   const scalars = Services.telemetry.snapshotScalars(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, true);
   equal(scalars.dynamic["telemetry.test.dynamic.webext_string"], "hello");
 });
 
 add_task(async function test_telemetry_register_scalars_multiple() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.registerScalars("telemetry.test.dynamic", {
+    backgroundScript: async () => {
+      await browser.telemetry.registerScalars("telemetry.test.dynamic", {
         "webext_string": {
           kind: browser.telemetry.ScalarType.STRING,
           keyed: false,
           record_on_release: true,
         },
         "webext_string_too": {
           kind: browser.telemetry.ScalarType.STRING,
           keyed: false,
           record_on_release: true,
         },
-      }).then(() => {
-        return browser.telemetry.scalarSet("telemetry.test.dynamic.webext_string", "hello");
-      }).then(() => {
-        return browser.telemetry.scalarSet("telemetry.test.dynamic.webext_string_too", "world");
-      }).then(() => {
-        browser.test.notifyPass("register_scalars_multiple");
       });
+      await browser.telemetry.scalarSet("telemetry.test.dynamic.webext_string", "hello");
+      await browser.telemetry.scalarSet("telemetry.test.dynamic.webext_string_too", "world");
+      browser.test.notifyPass("register_scalars_multiple");
     },
     doneSignal: "register_scalars_multiple",
   });
 
   const scalars = Services.telemetry.snapshotScalars(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, true);
   equal(scalars.dynamic["telemetry.test.dynamic.webext_string"], "hello");
   equal(scalars.dynamic["telemetry.test.dynamic.webext_string_too"], "world");
 });
 
 add_task(async function test_telemetry_register_scalars_boolean() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.registerScalars("telemetry.test.dynamic", {
+    backgroundScript: async () => {
+      await browser.telemetry.registerScalars("telemetry.test.dynamic", {
         "webext_boolean": {
           kind: browser.telemetry.ScalarType.BOOLEAN,
           keyed: false,
           record_on_release: true,
         },
-      }).then(() => {
-        return browser.telemetry.scalarSet("telemetry.test.dynamic.webext_boolean", true);
-      }).then(() => {
-        browser.test.notifyPass("register_scalars_boolean");
       });
+      await browser.telemetry.scalarSet("telemetry.test.dynamic.webext_boolean", true);
+      browser.test.notifyPass("register_scalars_boolean");
     },
     doneSignal: "register_scalars_boolean",
   });
 
   const scalars = Services.telemetry.snapshotScalars(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, true);
   equal(scalars.dynamic["telemetry.test.dynamic.webext_boolean"], true);
 });
 
 add_task(async function test_telemetry_register_scalars_count() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.registerScalars("telemetry.test.dynamic", {
+    backgroundScript: async () => {
+      await browser.telemetry.registerScalars("telemetry.test.dynamic", {
         "webext_count": {
           kind: browser.telemetry.ScalarType.COUNT,
           keyed: false,
           record_on_release: true,
         },
-      }).then(() => {
-        return browser.telemetry.scalarSet("telemetry.test.dynamic.webext_count", 123);
-      }).then(() => {
-        browser.test.notifyPass("register_scalars_count");
       });
+      await browser.telemetry.scalarSet("telemetry.test.dynamic.webext_count", 123);
+      browser.test.notifyPass("register_scalars_count");
     },
     doneSignal: "register_scalars_count",
   });
 
   const scalars = Services.telemetry.snapshotScalars(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, true);
   equal(scalars.dynamic["telemetry.test.dynamic.webext_count"], 123);
 });
 
 add_task(async function test_telemetry_register_events() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.registerEvents("telemetry.test.dynamic", {
+    backgroundScript: async () => {
+      await browser.telemetry.registerEvents("telemetry.test.dynamic", {
         "test1": {
           methods: ["test1"],
           objects: ["object1"],
           extra_keys: [],
         },
-      }).then(() => {
-        return browser.telemetry.recordEvent("telemetry.test.dynamic", "test1", "object1");
-      }).then(() => {
-        browser.test.notifyPass("register_events");
       });
+      await browser.telemetry.recordEvent("telemetry.test.dynamic", "test1", "object1");
+      browser.test.notifyPass("register_events");
     },
     doneSignal: "register_events",
   });
 
   let events = Services.telemetry.snapshotEvents(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, true);
   let expected = [["telemetry.test.dynamic", "test1", "object1"]];
   equal(events.dynamic.length, expected.length);
   deepEqual(events.dynamic.map(e => e.slice(1)), expected);
 });
 
 add_task(async function test_telemetry_submit_ping() {
   await run({
-    backgroundScript: () => {
-      browser.telemetry.submitPing("webext-test", {}, {})
-        .then(() => { browser.test.notifyPass("submit_ping"); },
-              ex => { browser.test.notifyFail("submit_ping", ex); });
+    backgroundScript: async () => {
+      await browser.telemetry.submitPing("webext-test", {}, {});
+      browser.test.notifyPass("submit_ping");
     },
     doneSignal: "submit_ping",
   });
 
   let pings = await TelemetryArchive.promiseArchivedPingList();
   equal(pings.length, 1);
   equal(pings[0].type, "webext-test");
 });