summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/ReadableStream/shell.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/tests/non262/ReadableStream/shell.js
parentInitial commit. (diff)
downloadfirefox-esr-upstream.tar.xz
firefox-esr-upstream.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/non262/ReadableStream/shell.js')
-rw-r--r--js/src/tests/non262/ReadableStream/shell.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/js/src/tests/non262/ReadableStream/shell.js b/js/src/tests/non262/ReadableStream/shell.js
new file mode 100644
index 0000000000..7e83ed2934
--- /dev/null
+++ b/js/src/tests/non262/ReadableStream/shell.js
@@ -0,0 +1,30 @@
+// Return a promise that will resolve to `undefined` the next time jobs are
+// processed.
+//
+// `ticks` indicates how long the promise should "wait" before resolving: a
+// promise created with `asyncSleep(n)` will become settled and fire its handlers
+// before a promise created with `asyncSleep(n+1)`.
+//
+function asyncSleep(ticks) {
+ let p = Promise.resolve();
+ if (ticks > 0) {
+ return p.then(() => asyncSleep(ticks - 1));
+ }
+ return p;
+}
+
+// Run the async function `test`. Wait for it to finish running. Throw if it
+// throws or if it fails to finish (awaiting a value forever).
+function runAsyncTest(test) {
+ let passed = false;
+ let problem = "test did not finish";
+ test()
+ .then(_ => { passed = true; })
+ .catch(exc => { problem = exc; });
+ drainJobQueue();
+ if (!passed) {
+ throw problem;
+ }
+
+ reportCompare(0, 0);
+}