summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2022-07-20 20:28:19 +0200
committerGitHub <noreply@github.com>2022-07-20 20:28:19 +0200
commitd53936eb7d3fe4cda8e06f7310e4c8f12702b413 (patch)
treead4b5cf09dee34e8618096c35e58b54c0312f2e1 /cli
parent6e350b2b7c7b027b31694875cdb423f494d1b423 (diff)
Reland "feat: add "unhandledrejection" event support" (#15211)
Diffstat (limited to 'cli')
-rw-r--r--cli/bench/main.rs1
-rw-r--r--cli/dts/lib.deno.shared_globals.d.ts11
-rw-r--r--cli/tests/integration/run_tests.rs5
-rw-r--r--cli/tests/testdata/unhandled_rejection.js11
-rw-r--r--cli/tests/testdata/unhandled_rejection.js.out8
5 files changed, 36 insertions, 0 deletions
diff --git a/cli/bench/main.rs b/cli/bench/main.rs
index e4cbf3eda..0ef520edd 100644
--- a/cli/bench/main.rs
+++ b/cli/bench/main.rs
@@ -174,6 +174,7 @@ fn run_exec_time(
benchmark_file,
"--warmup",
"3",
+ "--show-output",
]
.iter()
.map(|s| s.to_string())
diff --git a/cli/dts/lib.deno.shared_globals.d.ts b/cli/dts/lib.deno.shared_globals.d.ts
index fc40bb54e..abf5e41fb 100644
--- a/cli/dts/lib.deno.shared_globals.d.ts
+++ b/cli/dts/lib.deno.shared_globals.d.ts
@@ -400,6 +400,17 @@ declare class ErrorEvent extends Event {
constructor(type: string, eventInitDict?: ErrorEventInit);
}
+interface PromiseRejectionEventInit extends EventInit {
+ promise: Promise<any>;
+ reason?: any;
+}
+
+declare class PromiseRejectionEvent extends Event {
+ readonly promise: Promise<any>;
+ readonly reason: any;
+ constructor(type: string, eventInitDict?: PromiseRejectionEventInit);
+}
+
interface AbstractWorkerEventMap {
"error": ErrorEvent;
}
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index 96e4cfce5..d477bb896 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -2782,3 +2782,8 @@ itest!(followup_dyn_import_resolved {
args: "run --unstable --allow-read followup_dyn_import_resolves/main.ts",
output: "followup_dyn_import_resolves/main.ts.out",
});
+
+itest!(unhandled_rejection {
+ args: "run --allow-read unhandled_rejection.js",
+ output: "unhandled_rejection.js.out",
+});
diff --git a/cli/tests/testdata/unhandled_rejection.js b/cli/tests/testdata/unhandled_rejection.js
new file mode 100644
index 000000000..352e861b4
--- /dev/null
+++ b/cli/tests/testdata/unhandled_rejection.js
@@ -0,0 +1,11 @@
+globalThis.addEventListener("unhandledrejection", (e) => {
+ console.log("unhandled rejection at:", e.promise, "reason:", e.reason);
+ e.preventDefault();
+});
+
+function Foo() {
+ this.bar = Promise.reject(new Error("bar not available"));
+}
+
+new Foo();
+Promise.reject();
diff --git a/cli/tests/testdata/unhandled_rejection.js.out b/cli/tests/testdata/unhandled_rejection.js.out
new file mode 100644
index 000000000..4c41795ce
--- /dev/null
+++ b/cli/tests/testdata/unhandled_rejection.js.out
@@ -0,0 +1,8 @@
+unhandled rejection at: Promise {
+ <rejected> Error: bar not available
+ at new Foo (file:///[WILDCARD]/testdata/unhandled_rejection.js:7:29)
+ at file:///[WILDCARD]/testdata/unhandled_rejection.js:10:1
+} reason: Error: bar not available
+ at new Foo (file:///[WILDCARD]/testdata/unhandled_rejection.js:7:29)
+ at file:///[WILDCARD]/testdata/unhandled_rejection.js:10:1
+unhandled rejection at: Promise { <rejected> undefined } reason: undefined