From d60eef25a1e03c9d12622303012e71490f4491ef Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 5 Mar 2023 12:49:25 -0500 Subject: [PATCH] test_runner: throw if harness is not bootstrapped This commit updates the test harness to re-throw uncaught errors if bootstrapping has not completed. This updates the existing logic which tried to detect a specific error code. PR-URL: https://github.com/nodejs/node/pull/46962 Reviewed-By: Moshe Atlow Reviewed-By: Yagiz Nizipli --- lib/internal/test_runner/harness.js | 5 ++--- lib/internal/test_runner/utils.js | 17 +++++------------ 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index a00320a6b0d2d2..0b1d7dd85f2eb8 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -16,7 +16,6 @@ const { const { kEmptyObject } = require('internal/util'); const { kCancelledByParent, Test, Suite } = require('internal/test_runner/test'); const { - kAsyncBootstrapFailure, parseCommandLine, setupTestReporters, } = require('internal/test_runner/utils'); @@ -30,11 +29,11 @@ function createTestTree(options = kEmptyObject) { function createProcessEventHandler(eventName, rootTest) { return (err) => { - if (err?.failureType === kAsyncBootstrapFailure) { + if (!rootTest.harness.bootstrapComplete) { // Something went wrong during the asynchronous portion of bootstrapping // the test runner. Since the test runner is not setup properly, we can't // do anything but throw the error. - throw err.cause; + throw err; } // Check if this error is coming from a test. If it is, fail the test. diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js index d4564b063f3bbd..04427801d4ad50 100644 --- a/lib/internal/test_runner/utils.js +++ b/lib/internal/test_runner/utils.js @@ -8,7 +8,6 @@ const { RegExp, RegExpPrototypeExec, SafeMap, - Symbol, } = primordials; const { basename } = require('path'); const { createWriteStream } = require('fs'); @@ -25,7 +24,6 @@ const { } = require('internal/errors'); const { compose } = require('stream'); -const kAsyncBootstrapFailure = Symbol('asyncBootstrapFailure'); const kMultipleCallbackInvocations = 'multipleCallbackInvocations'; const kRegExpPattern = /^\/(.*)\/([a-z]*)$/; const kSupportedFileExtensions = /\.[cm]?js$/; @@ -152,15 +150,11 @@ async function getReportersMap(reporters, destinations) { async function setupTestReporters(rootTest) { - try { - const { reporters, destinations } = parseCommandLine(); - const reportersMap = await getReportersMap(reporters, destinations); - for (let i = 0; i < reportersMap.length; i++) { - const { reporter, destination } = reportersMap[i]; - compose(rootTest.reporter, reporter).pipe(destination); - } - } catch (err) { - throw new ERR_TEST_FAILURE(err, kAsyncBootstrapFailure); + const { reporters, destinations } = parseCommandLine(); + const reportersMap = await getReportersMap(reporters, destinations); + for (let i = 0; i < reportersMap.length; i++) { + const { reporter, destination } = reportersMap[i]; + compose(rootTest.reporter, reporter).pipe(destination); } } @@ -226,7 +220,6 @@ module.exports = { doesPathMatchFilter, isSupportedFileType, isTestFailureError, - kAsyncBootstrapFailure, parseCommandLine, setupTestReporters, };