From d325b4511421844d45b50f3f1308f587773d31d6 Mon Sep 17 00:00:00 2001 From: Steve Herzog Date: Thu, 16 Feb 2023 12:53:18 -0600 Subject: [PATCH] test_runner: support defining test reporter in NODE_OPTIONS Adds --test-reporter and --test-reporter-destination as allowable options in NODE_OPTIONS. Fixes https://github.com/nodejs/node/issues/46484 --- lib/internal/test_runner/runner.js | 8 ++++++++ src/node_options.cc | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/internal/test_runner/runner.js b/lib/internal/test_runner/runner.js index d2b5335706e6e5..c6ef609fc96775 100644 --- a/lib/internal/test_runner/runner.js +++ b/lib/internal/test_runner/runner.js @@ -131,6 +131,13 @@ function getRunArgs({ path, inspectPort }) { return argv; } +function getNodeOptions(options) { + if (!options) { + return options; + } + return ArrayPrototypeFilter(options.split(' '), filterExecArgv).join(' '); +} + class FileTest extends Test { #buffer = []; #checkNestedComment({ comment }) { @@ -231,6 +238,7 @@ function runTestFile(path, root, inspectPort, filesWatcher) { const args = getRunArgs({ path, inspectPort }); const stdio = ['pipe', 'pipe', 'pipe']; const env = { ...process.env }; + env.NODE_OPTIONS = getNodeOptions(process.env.NODE_OPTIONS); if (filesWatcher) { stdio.push('ipc'); env.WATCH_REPORT_DEPENDENCIES = '1'; diff --git a/src/node_options.cc b/src/node_options.cc index c1f97a5d9207eb..37ff1a2239ddbe 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -564,10 +564,12 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() { &EnvironmentOptions::test_name_pattern); AddOption("--test-reporter", "report test output using the given reporter", - &EnvironmentOptions::test_reporter); + &EnvironmentOptions::test_reporter, + kAllowedInEnvvar); AddOption("--test-reporter-destination", "report given reporter to the given destination", - &EnvironmentOptions::test_reporter_destination); + &EnvironmentOptions::test_reporter_destination, + kAllowedInEnvvar); AddOption("--test-only", "run tests with 'only' option set", &EnvironmentOptions::test_only,