From 5ffcbcfcc84b9cce891acb165bc7644ec4a0fe64 Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Thu, 19 May 2022 14:05:57 +0200 Subject: feat: make Child.kill argument optional (#14669) --- cli/dts/lib.deno.unstable.d.ts | 4 ++-- cli/tests/unit/spawn_test.ts | 23 +++++++++++++++++++++++ runtime/js/40_spawn.js | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/cli/dts/lib.deno.unstable.d.ts b/cli/dts/lib.deno.unstable.d.ts index bb93eac8d..e21c2afce 100644 --- a/cli/dts/lib.deno.unstable.d.ts +++ b/cli/dts/lib.deno.unstable.d.ts @@ -1060,8 +1060,8 @@ declare namespace Deno { /** Waits for the child to exit completely, returning all its output and status. */ output(): Promise>; - /** Kills the process with given Signal. */ - kill(signo: Signal): void; + /** Kills the process with given Signal. Defaults to SIGTERM. */ + kill(signo?: Signal): void; } /** diff --git a/cli/tests/unit/spawn_test.ts b/cli/tests/unit/spawn_test.ts index 40224dfb4..de47b8757 100644 --- a/cli/tests/unit/spawn_test.ts +++ b/cli/tests/unit/spawn_test.ts @@ -248,6 +248,29 @@ Deno.test( }, ); +Deno.test( + { permissions: { run: true, read: true } }, + async function spawnKillOptional() { + const child = Deno.spawnChild(Deno.execPath(), { + args: ["eval", "setTimeout(() => {}, 10000)"], + stdout: "null", + stderr: "null", + }); + + child.kill(); + const status = await child.status; + + assertEquals(status.success, false); + if (Deno.build.os === "windows") { + assertEquals(status.code, 1); + assertEquals(status.signal, null); + } else { + assertEquals(status.code, 143); + assertEquals(status.signal, "SIGTERM"); + } + }, +); + Deno.test( { permissions: { run: true, read: true } }, async function spawnAbort() { diff --git a/runtime/js/40_spawn.js b/runtime/js/40_spawn.js index 77236ee2b..7a2f06b6a 100644 --- a/runtime/js/40_spawn.js +++ b/runtime/js/40_spawn.js @@ -165,7 +165,7 @@ }; } - kill(signo) { + kill(signo = "SIGTERM") { if (this.#rid === null) { throw new TypeError("Child process has already terminated."); } -- cgit v1.2.3