Skip to content

Commit

Permalink
test_runner: simplify test start time tracking
Browse files Browse the repository at this point in the history
This commit simplifies the logic for tracking test start time.
The start time is now set only when a test/suite begins running.
If the test/suite never runs, a fallback is provided in postRun().

PR-URL: #52182
Reviewed-By: Yagiz Nizipli <yagiz.nizipli@sentry.io>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
  • Loading branch information
cjihrig authored and nodejs-github-bot committed Mar 25, 2024
1 parent a8b21fd commit 878047b
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 9 deletions.
5 changes: 2 additions & 3 deletions lib/internal/test_runner/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,6 @@ class Test extends AsyncResource {
}

if (preventAddingSubtests) {
test.startTime = test.startTime || hrtime();
test.fail(
new ERR_TEST_FAILURE(
'test could not be started because its parent finished',
Expand Down Expand Up @@ -537,7 +536,6 @@ class Test extends AsyncResource {
kCancelledByParent,
),
);
this.startTime = this.startTime || this.endTime; // If a test was canceled before it was started, e.g inside a hook
this.cancelled = true;
this.abortController.abort();
}
Expand Down Expand Up @@ -763,12 +761,13 @@ class Test extends AsyncResource {
}

postRun(pendingSubtestsError) {
this.startTime ??= hrtime();

// If the test was failed before it even started, then the end time will
// be earlier than the start time. Correct that here.
if (this.endTime < this.startTime) {
this.endTime = hrtime();
}
this.startTime ??= this.endTime;

// The test has run, so recursively cancel any outstanding subtests and
// mark this test as failed if any subtests failed.
Expand Down
12 changes: 6 additions & 6 deletions test/fixtures/test-runner/output/hooks_spec_reporter.snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@

describe hooks - no subtests (*ms)
before throws
1
1 (*ms)
'test did not finish before its parent and was cancelled'

2
2 (*ms)
'test did not finish before its parent and was cancelled'

before throws (*ms)
Expand Down Expand Up @@ -390,7 +390,7 @@

- after() called
run after when before throws
1
1 (*ms)
'test did not finish before its parent and was cancelled'

run after when before throws (*ms)
Expand Down Expand Up @@ -422,11 +422,11 @@
failing tests:

*
1
1 (*ms)
'test did not finish before its parent and was cancelled'

*
2
2 (*ms)
'test did not finish before its parent and was cancelled'

*
Expand Down Expand Up @@ -772,7 +772,7 @@
*

*
1
1 (*ms)
'test did not finish before its parent and was cancelled'

*
Expand Down

0 comments on commit 878047b

Please sign in to comment.