summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/cookies/resources/testharness-helpers.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
commit0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch)
treea31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/cookies/resources/testharness-helpers.js
parentInitial commit. (diff)
downloadfirefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz
firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/cookies/resources/testharness-helpers.js')
-rw-r--r--testing/web-platform/tests/cookies/resources/testharness-helpers.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/testing/web-platform/tests/cookies/resources/testharness-helpers.js b/testing/web-platform/tests/cookies/resources/testharness-helpers.js
new file mode 100644
index 0000000000..84368d6d99
--- /dev/null
+++ b/testing/web-platform/tests/cookies/resources/testharness-helpers.js
@@ -0,0 +1,49 @@
+// Given an array of potentially asynchronous tests, this function will execute
+// each in serial, ensuring that one and only one test is executing at a time.
+//
+// The test array should look like this:
+//
+//
+// var tests = [
+// [
+// "Test description goes here.",
+// function () {
+// // Test code goes here. `this` is bound to the test object.
+// }
+// ],
+// ...
+// ];
+//
+// The |setup| and |teardown| arguments are functions which are executed before
+// and after each test, respectively.
+function executeTestsSerially(testList, setup, teardown) {
+ var tests = testList.map(function (t) {
+ return {
+ test: async_test(t[0]),
+ code: t[1]
+ };
+ });
+
+ var executeNextTest = function () {
+ var current = tests.shift();
+ if (current === undefined) {
+ return;
+ }
+
+ // Setup the test fixtures.
+ if (setup) {
+ setup();
+ }
+
+ // Bind a callback to tear down the test fixtures.
+ if (teardown) {
+ current.test.add_cleanup(teardown);
+ }
+
+ // Execute the test.
+ current.test.step(current.code);
+ };
+
+ add_result_callback(function () { setTimeout(executeNextTest, 0) });
+ executeNextTest();
+}