From ec23368bc7e820a84adab94a89ceec97da2916a2 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Thu, 21 Mar 2024 14:09:23 -0400 Subject: [PATCH] test_runner: simplify test end time tracking This commit simplifies the logic for tracking test end time. The end time is now only set in postRun(), which every test runs when it ends. --- lib/internal/test_runner/test.js | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index d5a07cbd6f757a..f61aada4092870 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -526,7 +526,7 @@ class Test extends AsyncResource { }; #cancel(error) { - if (this.endTime !== null) { + if (this.endTime !== null || this.error !== null) { return; } @@ -564,17 +564,15 @@ class Test extends AsyncResource { return; } - this.endTime = hrtime(); this.passed = false; this.error = err; } pass() { - if (this.endTime !== null) { + if (this.error !== null) { return; } - this.endTime = hrtime(); this.passed = true; } @@ -707,15 +705,8 @@ class Test extends AsyncResource { } this.pass(); - try { - await afterEach(); - await after(); - } catch (err) { - // If one of the after hooks has thrown unset endTime so that the - // catch below can do its cancel/fail logic. - this.endTime = null; - throw err; - } + await afterEach(); + await after(); } catch (err) { if (isTestFailureError(err)) { if (err.failureType === kTestTimeoutFailure) { @@ -761,13 +752,10 @@ class Test extends AsyncResource { } postRun(pendingSubtestsError) { + // If the test was cancelled before it started, then the start and end + // times need to be corrected. 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.endTime ??= hrtime(); // The test has run, so recursively cancel any outstanding subtests and // mark this test as failed if any subtests failed. @@ -974,6 +962,7 @@ class TestHook extends Test { error.failureType = kHookFailure; } + this.endTime ??= hrtime(); parent.reporter.fail(0, loc, parent.subtests.length + 1, loc.file, { __proto__: null, duration_ms: this.duration(),