fix(node): setting process.exitCode should change exit code of process (#21429)

This commit is contained in:
David Sherret 2023-12-02 11:03:37 -05:00 committed by GitHub
parent 61a4e88e38
commit f29075ae4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 5 deletions

View file

@ -76,15 +76,16 @@ const notImplementedEvents = [
];
export const argv: string[] = [];
let globalProcessExitCode: number | undefined = undefined;
/** https://nodejs.org/api/process.html#process_process_exit_code */
export const exit = (code?: number | string) => {
if (code || code === 0) {
if (typeof code === "string") {
const parsedCode = parseInt(code);
process.exitCode = isNaN(parsedCode) ? undefined : parsedCode;
globalProcessExitCode = isNaN(parsedCode) ? undefined : parsedCode;
} else {
process.exitCode = code;
globalProcessExitCode = code;
}
}
@ -426,7 +427,17 @@ class Process extends EventEmitter {
_exiting = _exiting;
/** https://nodejs.org/api/process.html#processexitcode_1 */
exitCode: undefined | number = undefined;
get exitCode() {
return globalProcessExitCode;
}
set exitCode(code: number | undefined) {
globalProcessExitCode = code;
code = parseInt(code) || 0;
if (!isNaN(code)) {
ops.op_set_exit_code(code);
}
}
// Typed as any to avoid importing "module" module for types
// deno-lint-ignore no-explicit-any