diff options
-rw-r--r-- | ext/node/polyfills/process.ts | 3 | ||||
-rw-r--r-- | tests/unit_node/process_test.ts | 16 |
2 files changed, 19 insertions, 0 deletions
diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index 9c73f5a51..f742e6634 100644 --- a/ext/node/polyfills/process.ts +++ b/ext/node/polyfills/process.ts @@ -469,6 +469,7 @@ Process.prototype.on = function ( } else if (event === "SIGTERM" && Deno.build.os === "windows") { // Ignores SIGTERM on windows. } else { + EventEmitter.prototype.on.call(this, event, listener); Deno.addSignalListener(event as Deno.Signal, listener); } } else { @@ -494,6 +495,7 @@ Process.prototype.off = function ( } else if (event === "SIGTERM" && Deno.build.os === "windows") { // Ignores SIGTERM on windows. } else { + EventEmitter.prototype.off.call(this, event, listener); Deno.removeSignalListener(event as Deno.Signal, listener); } } else { @@ -537,6 +539,7 @@ Process.prototype.prependListener = function ( if (event === "SIGBREAK" && Deno.build.os !== "windows") { // Ignores SIGBREAK if the platform is not windows. } else { + EventEmitter.prototype.prependListener.call(this, event, listener); Deno.addSignalListener(event as Deno.Signal, listener); } } else { diff --git a/tests/unit_node/process_test.ts b/tests/unit_node/process_test.ts index 0eadb0a16..8f56c92a0 100644 --- a/tests/unit_node/process_test.ts +++ b/tests/unit_node/process_test.ts @@ -1108,3 +1108,19 @@ Deno.test({ process.constructor.call({}); }, }); + +// Test for https://github.com/denoland/deno/issues/22892 +Deno.test("process.listeners - include SIG* events", () => { + const listener = () => console.log("SIGINT"); + process.on("SIGINT", listener); + assertEquals(process.listeners("SIGINT").length, 1); + + const listener2 = () => console.log("SIGINT"); + process.prependListener("SIGINT", listener2); + assertEquals(process.listeners("SIGINT").length, 2); + + process.off("SIGINT", listener); + assertEquals(process.listeners("SIGINT").length, 1); + process.off("SIGINT", listener2); + assertEquals(process.listeners("SIGINT").length, 0); +}); |