test_runner: bootstrap reporters before running tests · nodejs/node@28a1317 · GitHub
Skip to content

Commit 28a1317

Browse files
MoLowjuanarbol
authored andcommitted
test_runner: bootstrap reporters before running tests
PR-URL: #46737 Backport-PR-URL: #46839 Fixes: #46747 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent cd3aaa8 commit 28a1317

4 files changed

Lines changed: 29 additions & 12 deletions

File tree

doc/api/test.md

Lines changed: 3 additions & 0 deletions

lib/internal/main/test_runner.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ if (isUsingInspector()) {
2121
inspectPort = process.debugPort;
2222
}
2323

24-
const testsStream = run({ concurrency, inspectPort, watch: getOptionValue('--watch') });
25-
testsStream.once('test:fail', () => {
24+
run({ concurrency, inspectPort, watch: getOptionValue('--watch'), setup: setupTestReporters })
25+
.once('test:fail', () => {
2626
process.exitCode = 1;
2727
});
28-
setupTestReporters(testsStream);

lib/internal/test_runner/harness.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,29 +159,35 @@ function setup(root) {
159159
}
160160

161161
let globalRoot;
162+
let reportersSetup;
162163
function getGlobalRoot() {
163164
if (!globalRoot) {
164165
globalRoot = createTestTree();
165166
globalRoot.reporter.once('test:fail', () => {
166167
process.exitCode = 1;
167168
});
168-
setupTestReporters(globalRoot.reporter);
169+
reportersSetup = setupTestReporters(globalRoot.reporter);
169170
}
170171
return globalRoot;
171172
}
172173

174+
async function startSubtest(subtest) {
175+
await reportersSetup;
176+
await subtest.start();
177+
}
178+
173179
function test(name, options, fn) {
174180
const parent = testResources.get(executionAsyncId()) || getGlobalRoot();
175181
const subtest = parent.createSubtest(Test, name, options, fn);
176-
return subtest.start();
182+
return startSubtest(subtest);
177183
}
178184

179185
function runInParentContext(Factory) {
180186
function run(name, options, fn, overrides) {
181187
const parent = testResources.get(executionAsyncId()) || getGlobalRoot();
182188
const subtest = parent.createSubtest(Factory, name, options, fn, overrides);
183189
if (parent === getGlobalRoot()) {
184-
subtest.start();
190+
startSubtest(subtest);
185191
}
186192
}
187193

lib/internal/test_runner/runner.js

Lines changed: 15 additions & 6 deletions

0 commit comments

Comments
 (0)