mirror of
https://github.com/denoland/deno.git
synced 2024-12-21 23:04:45 -05:00
fix(ext/node): don't throw error for unsupported signal binding on windows (#25699)
This commit is contained in:
parent
282c4c262d
commit
f460188e58
2 changed files with 38 additions and 2 deletions
|
@ -517,6 +517,12 @@ Process.prototype.on = function (
|
|||
// Ignores SIGBREAK if the platform is not windows.
|
||||
} else if (event === "SIGTERM" && Deno.build.os === "windows") {
|
||||
// Ignores SIGTERM on windows.
|
||||
} else if (
|
||||
event !== "SIGBREAK" && event !== "SIGINT" && Deno.build.os === "windows"
|
||||
) {
|
||||
// Ignores all signals except SIGBREAK and SIGINT on windows.
|
||||
// deno-lint-ignore no-console
|
||||
console.warn(`Ignoring signal "${event}" on Windows`);
|
||||
} else {
|
||||
EventEmitter.prototype.on.call(this, event, listener);
|
||||
Deno.addSignalListener(event as Deno.Signal, listener);
|
||||
|
@ -541,8 +547,10 @@ Process.prototype.off = function (
|
|||
} else if (event.startsWith("SIG")) {
|
||||
if (event === "SIGBREAK" && Deno.build.os !== "windows") {
|
||||
// Ignores SIGBREAK if the platform is not windows.
|
||||
} else if (event === "SIGTERM" && Deno.build.os === "windows") {
|
||||
// Ignores SIGTERM on windows.
|
||||
} else if (
|
||||
event !== "SIGBREAK" && event !== "SIGINT" && Deno.build.os === "windows"
|
||||
) {
|
||||
// Ignores all signals except SIGBREAK and SIGINT on windows.
|
||||
} else {
|
||||
EventEmitter.prototype.off.call(this, event, listener);
|
||||
Deno.removeSignalListener(event as Deno.Signal, listener);
|
||||
|
|
|
@ -25,6 +25,7 @@ import {
|
|||
assertThrows,
|
||||
fail,
|
||||
} from "@std/assert";
|
||||
import { assertSpyCall, assertSpyCalls, spy } from "@std/testing/mock";
|
||||
import { stripAnsiCode } from "@std/fmt/colors";
|
||||
import * as path from "@std/path";
|
||||
import { delay } from "@std/async/delay";
|
||||
|
@ -238,6 +239,33 @@ Deno.test({
|
|||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "process.on - ignored signals on windows",
|
||||
ignore: Deno.build.os !== "windows",
|
||||
fn() {
|
||||
const ignoredSignals = ["SIGHUP", "SIGUSR1", "SIGUSR2"];
|
||||
|
||||
for (const signal of ignoredSignals) {
|
||||
using consoleSpy = spy(console, "warn");
|
||||
const handler = () => {};
|
||||
process.on(signal, handler);
|
||||
process.off(signal, handler);
|
||||
assertSpyCall(consoleSpy, 0, {
|
||||
args: [`Ignoring signal "${signal}" on Windows`],
|
||||
});
|
||||
}
|
||||
|
||||
{
|
||||
using consoleSpy = spy(console, "warn");
|
||||
const handler = () => {};
|
||||
process.on("SIGTERM", handler);
|
||||
process.off("SIGTERM", handler);
|
||||
// No warning is made for SIGTERM
|
||||
assertSpyCalls(consoleSpy, 0);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test(
|
||||
{ permissions: { run: true, read: true } },
|
||||
async function processKill() {
|
||||
|
|
Loading…
Reference in a new issue