diff --git a/lib/test/reporter/dot.js b/lib/internal/test_runner/reporter/dot.js similarity index 100% rename from lib/test/reporter/dot.js rename to lib/internal/test_runner/reporter/dot.js diff --git a/lib/test/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js similarity index 100% rename from lib/test/reporter/spec.js rename to lib/internal/test_runner/reporter/spec.js diff --git a/lib/test/reporter/tap.js b/lib/internal/test_runner/reporter/tap.js similarity index 100% rename from lib/test/reporter/tap.js rename to lib/internal/test_runner/reporter/tap.js diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js index 3fc99ce37cc33a..a7476c896648d5 100644 --- a/lib/internal/test_runner/utils.js +++ b/lib/internal/test_runner/utils.js @@ -93,28 +93,43 @@ const kBuiltinDestinations = new SafeMap([ ]); const kBuiltinReporters = new SafeMap([ - ['spec', 'node:test/reporter/spec'], - ['dot', 'node:test/reporter/dot'], - ['tap', 'node:test/reporter/tap'], + ['spec', 'internal/test_runner/reporter/spec'], + ['dot', 'internal/test_runner/reporter/dot'], + ['tap', 'internal/test_runner/reporter/tap'], ]); const kDefaultReporter = 'tap'; const kDefaultDestination = 'stdout'; +function tryBuiltinReporter(name) { + const builtinPath = kBuiltinReporters.get(name); + + if (builtinPath === undefined) { + return; + } + + return require(builtinPath); +} + async function getReportersMap(reporters, destinations) { return SafePromiseAllReturnArrayLike(reporters, async (name, i) => { const destination = kBuiltinDestinations.get(destinations[i]) ?? createWriteStream(destinations[i]); // Load the test reporter passed to --test-reporter - const reporterSpecifier = kBuiltinReporters.get(name) ?? name; - let parentURL; - try { - parentURL = pathToFileURL(process.cwd() + '/').href; - } catch { - parentURL = 'file:///'; + let reporter = tryBuiltinReporter(name); + + if (reporter === undefined) { + let parentURL; + + try { + parentURL = pathToFileURL(process.cwd() + '/').href; + } catch { + parentURL = 'file:///'; + } + + const { esmLoader } = require('internal/process/esm_loader'); + reporter = await esmLoader.import(name, parentURL, ObjectCreate(null)); } - const { esmLoader } = require('internal/process/esm_loader'); - let reporter = await esmLoader.import(reporterSpecifier, parentURL, ObjectCreate(null)); if (reporter?.default) { reporter = reporter.default;