From 7960ccb61e305843571f9cdab1964787f469312f 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 3d4fc3b49674c5..285dd96d139653 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -18,7 +18,6 @@ const { exitCodes: { kGenericUserError } } = internalBinding('errors'); const { kEmptyObject } = require('internal/util'); const { kCancelledByParent, Test, Suite } = require('internal/test_runner/test'); const { - kAsyncBootstrapFailure, parseCommandLine, setupTestReporters, } = require('internal/test_runner/utils'); @@ -32,11 +31,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 e4fd23c8e8cb60..6d5e474a59c411 100644 --- a/lib/internal/test_runner/utils.js +++ b/lib/internal/test_runner/utils.js @@ -7,7 +7,6 @@ const { RegExp, RegExpPrototypeExec, SafeMap, - Symbol, } = primordials; const { basename } = require('path'); const { createWriteStream } = require('fs'); @@ -24,7 +23,6 @@ const { } = require('internal/errors'); const { compose } = require('stream'); -const kAsyncBootstrapFailure = Symbol('asyncBootstrapFailure'); const kMultipleCallbackInvocations = 'multipleCallbackInvocations'; const kRegExpPattern = /^\/(.*)\/([a-z]*)$/; const kSupportedFileExtensions = /\.[cm]?js$/; @@ -151,15 +149,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); } } @@ -225,7 +219,6 @@ module.exports = { doesPathMatchFilter, isSupportedFileType, isTestFailureError, - kAsyncBootstrapFailure, parseCommandLine, setupTestReporters, };