diff --git a/test/common/README.md b/test/common/README.md index f48215836ecae5..52e8e2e59c47da 100644 --- a/test/common/README.md +++ b/test/common/README.md @@ -118,15 +118,6 @@ Tests whether `name` and `expected` are part of a raised warning. Checks if `pathname` exists -### fires(promise, [error], [timeoutMs]) -* promise [<Promise] -* error [<String] default = 'timeout' -* timeoutMs [<Number] default = 100 - -Returns a new promise that will propagate `promise` resolution or rejection if -that happens within the `timeoutMs` timespan, or rejects with `error` as -a reason otherwise. - ### getArrayBufferViews(buf) * `buf` [<Buffer>] * return [<ArrayBufferView[]>] diff --git a/test/common/index.js b/test/common/index.js index 2cf188abe5ffc9..f0ff81939940e6 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -850,32 +850,6 @@ function restoreWritable(name) { delete process[name].writeTimes; } -function onResolvedOrRejected(promise, callback) { - return promise.then((result) => { - callback(); - return result; - }, (error) => { - callback(); - throw error; - }); -} - -function timeoutPromise(error, timeoutMs) { - let clearCallback = null; - let done = false; - const promise = onResolvedOrRejected(new Promise((resolve, reject) => { - const timeout = setTimeout(() => reject(error), timeoutMs); - clearCallback = () => { - if (done) - return; - clearTimeout(timeout); - resolve(); - }; - }), () => done = true); - promise.clear = clearCallback; - return promise; -} - exports.hijackStdout = hijackStdWritable.bind(null, 'stdout'); exports.hijackStderr = hijackStdWritable.bind(null, 'stderr'); exports.restoreStdout = restoreWritable.bind(null, 'stdout'); @@ -889,19 +863,3 @@ exports.firstInvalidFD = function firstInvalidFD() { } catch (e) {} return fd; }; - -exports.fires = function fires(promise, error, timeoutMs) { - if (!timeoutMs && util.isNumber(error)) { - timeoutMs = error; - error = null; - } - if (!error) - error = 'timeout'; - if (!timeoutMs) - timeoutMs = 100; - const timeout = timeoutPromise(error, timeoutMs); - return Promise.race([ - onResolvedOrRejected(promise, () => timeout.clear()), - timeout - ]); -}; diff --git a/test/common/inspector-helper.js b/test/common/inspector-helper.js index 454eef4c5e26da..8fc778555d0454 100644 --- a/test/common/inspector-helper.js +++ b/test/common/inspector-helper.js @@ -216,7 +216,7 @@ class InspectorSession { waitForNotification(methodOrPredicate, description) { const desc = description || methodOrPredicate; const message = `Timed out waiting for matching notification (${desc}))`; - return common.fires( + return fires( this._asyncWaitForNotification(methodOrPredicate), message, TIMEOUT); } @@ -323,7 +323,7 @@ class NodeInstance { const instance = new NodeInstance( [], `${scriptContents}\nprocess._rawDebug('started');`, undefined); const msg = 'Timed out waiting for process to start'; - while (await common.fires(instance.nextStderrString(), msg, TIMEOUT) !== + while (await fires(instance.nextStderrString(), msg, TIMEOUT) !== 'started') {} process._debugProcess(instance._process.pid); return instance; @@ -412,6 +412,43 @@ function readMainScriptSource() { return fs.readFileSync(_MAINSCRIPT, 'utf8'); } +function onResolvedOrRejected(promise, callback) { + return promise.then((result) => { + callback(); + return result; + }, (error) => { + callback(); + throw error; + }); +} + +function timeoutPromise(error, timeoutMs) { + let clearCallback = null; + let done = false; + const promise = onResolvedOrRejected(new Promise((resolve, reject) => { + const timeout = setTimeout(() => reject(error), timeoutMs); + clearCallback = () => { + if (done) + return; + clearTimeout(timeout); + resolve(); + }; + }), () => done = true); + promise.clear = clearCallback; + return promise; +} + +// Returns a new promise that will propagate `promise` resolution or rejection +// if that happens within the `timeoutMs` timespan, or rejects with `error` as +// a reason otherwise. +function fires(promise, error, timeoutMs) { + const timeout = timeoutPromise(error, timeoutMs); + return Promise.race([ + onResolvedOrRejected(promise, () => timeout.clear()), + timeout + ]); +} + module.exports = { mainScriptPath: _MAINSCRIPT, readMainScriptSource, diff --git a/test/parallel/test-repl-top-level-await.js b/test/parallel/test-repl-top-level-await.js index 2d92673692c227..2d6b32b4003853 100644 --- a/test/parallel/test-repl-top-level-await.js +++ b/test/parallel/test-repl-top-level-await.js @@ -36,7 +36,7 @@ class REPLStream extends common.ArrayStream { throw new Error('Currently waiting for response to another command'); } this.lines = ['']; - return common.fires(new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { const onError = (err) => { this.removeListener('line', onLine); reject(err); @@ -50,7 +50,7 @@ class REPLStream extends common.ArrayStream { }; this.once('error', onError); this.on('line', onLine); - }), new Error(), 1000); + }); } }