Files
bun.sh/test/js/node/process/process-signal-handler.fixture.js
2024-05-08 23:32:11 -07:00

80 lines
1.6 KiB
JavaScript

import os from "os";
import { raise } from "./call-raise";
function checkSignal(signalName, args) {
if (args.length !== 2) {
throw new Error("Expected 2 arguments, got " + args.length);
}
if (args[0] !== signalName) {
throw new Error("Expected signal name " + signalName + ", got " + args[0]);
}
const signalNumber = os.constants.signals[signalName];
if (args[1] !== signalNumber) {
throw new Error("Expected signal number " + signalNumber + ", got " + args[1]);
}
}
var counter = 0;
function done() {
counter++;
if (counter === 2) {
setTimeout(() => {
if (counter !== 2) {
console.log(counter);
console.log("FAIL");
process.exit(1);
}
console.log("PASS");
process.exit(0);
}, 1);
}
}
var counter2 = 0;
function done2() {
counter2++;
if (counter2 === 2) {
setTimeout(() => {
if (counter2 !== 2) {
console.log(counter2);
console.log("FAIL");
process.exit(1);
}
console.log("PASS");
process.exit(0);
}, 1);
}
}
const SIGUSR1 = os.constants.signals.SIGUSR1;
const SIGUSR2 = os.constants.signals.SIGUSR2;
switch (process.argv.at(-1)) {
case "SIGUSR1": {
process.on("SIGUSR1", function () {
checkSignal("SIGUSR1", arguments);
done();
});
process.on("SIGUSR1", function () {
checkSignal("SIGUSR1", arguments);
done();
});
raise(SIGUSR1);
break;
}
case "SIGUSR2": {
process.on("SIGUSR2", () => {
done2();
});
process.emit("SIGUSR2");
raise(SIGUSR2);
break;
}
default: {
throw new Error("Unknown argument: " + process.argv.at(-1));
}
}