mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -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.
|
// Ignores SIGBREAK if the platform is not windows.
|
||||||
} else if (event === "SIGTERM" && Deno.build.os === "windows") {
|
} else if (event === "SIGTERM" && Deno.build.os === "windows") {
|
||||||
// Ignores SIGTERM on 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 {
|
} else {
|
||||||
EventEmitter.prototype.on.call(this, event, listener);
|
EventEmitter.prototype.on.call(this, event, listener);
|
||||||
Deno.addSignalListener(event as Deno.Signal, listener);
|
Deno.addSignalListener(event as Deno.Signal, listener);
|
||||||
|
@ -541,8 +547,10 @@ Process.prototype.off = function (
|
||||||
} else if (event.startsWith("SIG")) {
|
} else if (event.startsWith("SIG")) {
|
||||||
if (event === "SIGBREAK" && Deno.build.os !== "windows") {
|
if (event === "SIGBREAK" && Deno.build.os !== "windows") {
|
||||||
// Ignores SIGBREAK if the platform is not windows.
|
// Ignores SIGBREAK if the platform is not windows.
|
||||||
} else if (event === "SIGTERM" && Deno.build.os === "windows") {
|
} else if (
|
||||||
// Ignores SIGTERM on windows.
|
event !== "SIGBREAK" && event !== "SIGINT" && Deno.build.os === "windows"
|
||||||
|
) {
|
||||||
|
// Ignores all signals except SIGBREAK and SIGINT on windows.
|
||||||
} else {
|
} else {
|
||||||
EventEmitter.prototype.off.call(this, event, listener);
|
EventEmitter.prototype.off.call(this, event, listener);
|
||||||
Deno.removeSignalListener(event as Deno.Signal, listener);
|
Deno.removeSignalListener(event as Deno.Signal, listener);
|
||||||
|
|
|
@ -25,6 +25,7 @@ import {
|
||||||
assertThrows,
|
assertThrows,
|
||||||
fail,
|
fail,
|
||||||
} from "@std/assert";
|
} from "@std/assert";
|
||||||
|
import { assertSpyCall, assertSpyCalls, spy } from "@std/testing/mock";
|
||||||
import { stripAnsiCode } from "@std/fmt/colors";
|
import { stripAnsiCode } from "@std/fmt/colors";
|
||||||
import * as path from "@std/path";
|
import * as path from "@std/path";
|
||||||
import { delay } from "@std/async/delay";
|
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(
|
Deno.test(
|
||||||
{ permissions: { run: true, read: true } },
|
{ permissions: { run: true, read: true } },
|
||||||
async function processKill() {
|
async function processKill() {
|
||||||
|
|
Loading…
Reference in a new issue