diff options
| author | Satya Rohith <me@satyarohith.com> | 2024-04-16 19:15:41 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-16 13:45:41 +0000 |
| commit | 50223c5c532332f4a296b12b027f85429f529690 (patch) | |
| tree | 75d4494d1ade596038ad52ac0241addcc3a124c2 /tests/testdata | |
| parent | 0a7f46b8c29d67b579e4ffd4681aa5d0b7e30c6b (diff) | |
fix(ext/node): dispatch beforeExit/exit events irrespective of listeners (#23382)
Closes https://github.com/denoland/deno/issues/23342
Closes https://github.com/denoland/deno/issues/21757
Diffstat (limited to 'tests/testdata')
| -rw-r--r-- | tests/testdata/node/events_order.out | 12 | ||||
| -rw-r--r-- | tests/testdata/node/events_order.ts | 25 | ||||
| -rw-r--r-- | tests/testdata/node/process_beforeexit_exit_events.out | 2 | ||||
| -rw-r--r-- | tests/testdata/node/process_beforeexit_exit_events.ts | 9 |
4 files changed, 48 insertions, 0 deletions
diff --git a/tests/testdata/node/events_order.out b/tests/testdata/node/events_order.out new file mode 100644 index 000000000..270384d8d --- /dev/null +++ b/tests/testdata/node/events_order.out @@ -0,0 +1,12 @@ +beforeunload emitted from addEventListener +beforeunload emitted from addEventListener +beforeunload emitted from addEventListener +beforeExit emitted from process.on +more work done! 1 +beforeunload emitted from addEventListener +beforeExit emitted from process.on +more work done! 2 +beforeunload emitted from addEventListener +beforeExit emitted from process.on +unload emitted from addEventListener +exit emitted from process.on diff --git a/tests/testdata/node/events_order.ts b/tests/testdata/node/events_order.ts new file mode 100644 index 000000000..263f46b4c --- /dev/null +++ b/tests/testdata/node/events_order.ts @@ -0,0 +1,25 @@ +import process from "node:process"; + +let count = 0; +process.on("beforeExit", () => { + if (count === 0 || count === 1) { + setTimeout(() => console.log("more work done!", count), 10); + } + count++; + console.log("beforeExit emitted from process.on"); +}); +process.on("exit", () => console.log("exit emitted from process.on")); + +let countWeb = 0; +addEventListener("beforeunload", (event) => { + if (countWeb == 0 || countWeb == 1) { + event.preventDefault(); + } + countWeb++; + console.log("beforeunload emitted from addEventListener"); +}); + +addEventListener( + "unload", + () => console.log("unload emitted from addEventListener"), +); diff --git a/tests/testdata/node/process_beforeexit_exit_events.out b/tests/testdata/node/process_beforeexit_exit_events.out new file mode 100644 index 000000000..740ef6ffb --- /dev/null +++ b/tests/testdata/node/process_beforeexit_exit_events.out @@ -0,0 +1,2 @@ +beforeExit emitted from processEmit +exit emitted from processEmit diff --git a/tests/testdata/node/process_beforeexit_exit_events.ts b/tests/testdata/node/process_beforeexit_exit_events.ts new file mode 100644 index 000000000..a4c87f27e --- /dev/null +++ b/tests/testdata/node/process_beforeexit_exit_events.ts @@ -0,0 +1,9 @@ +import process from "node:process"; + +const originalEmit = process.emit; +process.emit = function (event, ...args) { + if (event === "exit" || event === "beforeExit") { + console.log(`${event} emitted from processEmit`); + } + return originalEmit.call(this, event, ...args); +}; |
