Skip to content

Commit

Permalink
test_runner: give the root test a harness reference
Browse files Browse the repository at this point in the history
This commit replaces the 'coverage' reference inside of the Test
class with a more generic harness reference which includes
coverage. This will let the root test more easily track process
level state such as code coverage, uncaughtException handlers,
and the state of bootstrapping.

PR-URL: #46962
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
  • Loading branch information
cjihrig authored and targos committed Mar 13, 2023
1 parent 4329c49 commit 2b6d9fe
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
7 changes: 6 additions & 1 deletion lib/internal/test_runner/harness.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ function setup(root) {
createProcessEventHandler('unhandledRejection', root);
const coverage = configureCoverage(root, globalOptions);
const exitHandler = () => {
root.coverage = collectCoverage(root, coverage);
root.harness.coverage = collectCoverage(root, coverage);
root.postRun(new ERR_TEST_FAILURE(
'Promise resolution is still pending but the event loop has already resolved',
kCancelledByParent));
Expand All @@ -162,6 +162,11 @@ function setup(root) {
process.on('SIGTERM', terminationHandler);
}

root.harness = {
__proto__: null,
bootstrapComplete: false,
coverage: null,
};
root.startTime = hrtime();

wasRootSetup.add(root);
Expand Down
6 changes: 3 additions & 3 deletions lib/internal/test_runner/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ class Test extends AsyncResource {
this.#outerSignal?.addEventListener('abort', this.#abortHandler);

this.fn = fn;
this.coverage = null; // Configured on the root test by the test harness.
this.harness = null; // Configured on the root test by the test harness.
this.mock = null;
this.name = name;
this.parent = parent;
Expand Down Expand Up @@ -637,8 +637,8 @@ class Test extends AsyncResource {
this.reporter.diagnostic(this.nesting, kFilename, `todo ${counters.todo}`);
this.reporter.diagnostic(this.nesting, kFilename, `duration_ms ${this.#duration()}`);

if (this.coverage) {
this.reporter.coverage(this.nesting, kFilename, this.coverage);
if (this.harness?.coverage) {
this.reporter.coverage(this.nesting, kFilename, this.harness.coverage);
}

this.reporter.push(null);
Expand Down

0 comments on commit 2b6d9fe

Please sign in to comment.