summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/integration/node_unit_tests.rs9
-rw-r--r--cli/tests/integration/run_tests.rs5
-rw-r--r--cli/tests/testdata/node/rejection_handled_web_process.ts26
-rw-r--r--cli/tests/testdata/node/rejection_handled_web_process.ts.out7
-rw-r--r--cli/tests/testdata/run/rejection_handled.out5
-rw-r--r--cli/tests/testdata/run/rejection_handled.ts17
6 files changed, 69 insertions, 0 deletions
diff --git a/cli/tests/integration/node_unit_tests.rs b/cli/tests/integration/node_unit_tests.rs
index 273066b09..351bf1eec 100644
--- a/cli/tests/integration/node_unit_tests.rs
+++ b/cli/tests/integration/node_unit_tests.rs
@@ -193,3 +193,12 @@ itest!(unhandled_rejection_web_process {
envs: env_vars_for_npm_tests(),
http_server: true,
});
+
+// Ensure that Web `onrejectionhandled` is fired before
+// Node's `process.on('rejectionHandled')`.
+itest!(rejection_handled_web_process {
+ args: "run -A node/rejection_handled_web_process.ts",
+ output: "node/rejection_handled_web_process.ts.out",
+ envs: env_vars_for_npm_tests(),
+ http_server: true,
+});
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index 2a349a5f2..999dc1177 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -3672,6 +3672,11 @@ itest!(unhandled_rejection_dynamic_import2 {
output: "run/unhandled_rejection_dynamic_import2/main.ts.out",
});
+itest!(rejection_handled {
+ args: "run --check run/rejection_handled.ts",
+ output: "run/rejection_handled.out",
+});
+
itest!(nested_error {
args: "run run/nested_error/main.ts",
output: "run/nested_error/main.ts.out",
diff --git a/cli/tests/testdata/node/rejection_handled_web_process.ts b/cli/tests/testdata/node/rejection_handled_web_process.ts
new file mode 100644
index 000000000..00d943feb
--- /dev/null
+++ b/cli/tests/testdata/node/rejection_handled_web_process.ts
@@ -0,0 +1,26 @@
+import chalk from "npm:chalk";
+import process from "node:process";
+
+console.log(chalk.red("Hello world!"));
+
+globalThis.addEventListener("unhandledrejection", (e) => {
+ console.log('globalThis.addEventListener("unhandledrejection");');
+ e.preventDefault();
+});
+
+globalThis.addEventListener("rejectionhandled", (_) => {
+ console.log("Web rejectionhandled");
+});
+
+process.on("rejectionHandled", (_) => {
+ console.log("Node rejectionHandled");
+});
+
+const a = Promise.reject(1);
+setTimeout(() => {
+ a.catch(() => console.log("Added catch handler to the promise"));
+}, 10);
+
+setTimeout(() => {
+ console.log("Success");
+}, 50);
diff --git a/cli/tests/testdata/node/rejection_handled_web_process.ts.out b/cli/tests/testdata/node/rejection_handled_web_process.ts.out
new file mode 100644
index 000000000..3a4e2ac23
--- /dev/null
+++ b/cli/tests/testdata/node/rejection_handled_web_process.ts.out
@@ -0,0 +1,7 @@
+[WILDCARD]
+Hello world!
+globalThis.addEventListener("unhandledrejection");
+Added catch handler to the promise
+Web rejectionhandled
+Node rejectionHandled
+Success
diff --git a/cli/tests/testdata/run/rejection_handled.out b/cli/tests/testdata/run/rejection_handled.out
new file mode 100644
index 000000000..5c06fcd2b
--- /dev/null
+++ b/cli/tests/testdata/run/rejection_handled.out
@@ -0,0 +1,5 @@
+[WILDCARD]
+unhandledrejection 1 Promise { <rejected> 1 }
+Added catch handler to the promise
+rejectionhandled 1 Promise { <rejected> 1 }
+Success
diff --git a/cli/tests/testdata/run/rejection_handled.ts b/cli/tests/testdata/run/rejection_handled.ts
new file mode 100644
index 000000000..f058ff966
--- /dev/null
+++ b/cli/tests/testdata/run/rejection_handled.ts
@@ -0,0 +1,17 @@
+window.addEventListener("unhandledrejection", (event) => {
+ console.log("unhandledrejection", event.reason, event.promise);
+ event.preventDefault();
+});
+
+window.addEventListener("rejectionhandled", (event) => {
+ console.log("rejectionhandled", event.reason, event.promise);
+});
+
+const a = Promise.reject(1);
+setTimeout(async () => {
+ a.catch(() => console.log("Added catch handler to the promise"));
+}, 10);
+
+setTimeout(() => {
+ console.log("Success");
+}, 50);