summaryrefslogtreecommitdiff
path: root/cli/js/40_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/40_test.js')
-rw-r--r--cli/js/40_test.js19
1 files changed, 18 insertions, 1 deletions
diff --git a/cli/js/40_test.js b/cli/js/40_test.js
index 2877bfa9b..5a081e217 100644
--- a/cli/js/40_test.js
+++ b/cli/js/40_test.js
@@ -28,6 +28,10 @@ const {
import { setExitHandler } from "ext:runtime/30_os.js";
+// Capture `Deno` global so that users deleting or mangling it, won't
+// have impact on our sanitizers.
+const DenoNs = globalThis.Deno;
+
/**
* @typedef {{
* id: number,
@@ -101,7 +105,20 @@ function assertExit(fn, isTest) {
try {
const innerResult = await fn(...new SafeArrayIterator(params));
- if (innerResult) return innerResult;
+ const exitCode = DenoNs.exitCode;
+ if (exitCode !== 0) {
+ // Reset the code to allow other tests to run...
+ DenoNs.exitCode = 0;
+ // ...and fail the current test.
+ throw new Error(
+ `${
+ isTest ? "Test case" : "Bench"
+ } finished with exit code set to ${exitCode}.`,
+ );
+ }
+ if (innerResult) {
+ return innerResult;
+ }
} finally {
setExitHandler(null);
}