diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/integration/node_compat_tests.rs | 14 | ||||
-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 |
5 files changed, 62 insertions, 0 deletions
diff --git a/tests/integration/node_compat_tests.rs b/tests/integration/node_compat_tests.rs index c4c4ba1fa..9dfd07ab4 100644 --- a/tests/integration/node_compat_tests.rs +++ b/tests/integration/node_compat_tests.rs @@ -21,3 +21,17 @@ itest!(node_test_module_no_sanitizers { // exit_code: 123, http_server: true, }); + +itest!( + node_process_beforeexit_exit_events_emitted_without_listeners { + args: "run node/process_beforeexit_exit_events.ts", + output: "node/process_beforeexit_exit_events.out", + exit_code: 0, + } +); + +itest!(web_node_events_dispatched_in_correct_order { + args: "run node/events_order.ts", + output: "node/events_order.out", + exit_code: 0, +}); 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); +}; |