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

@ -681,9 +681,58 @@ Deno.test("process.memoryUsage.rss()", () => {
});
Deno.test("process.exitCode", () => {
assert(process.exitCode === undefined);
assertEquals(process.exitCode, undefined);
process.exitCode = 127;
assert(process.exitCode === 127);
assertEquals(process.exitCode, 127);
// deno-lint-ignore no-explicit-any
(process.exitCode as any) = "asdf";
// deno-lint-ignore no-explicit-any
assertEquals(process.exitCode as any, "asdf");
// deno-lint-ignore no-explicit-any
(process.exitCode as any) = "10";
process.exitCode = undefined; // reset
});
async function exitCodeTest(codeText: string, expectedExitCode: number) {
const command = new Deno.Command(Deno.execPath(), {
args: [
"eval",
codeText,
],
cwd: testDir,
});
const { code } = await command.output();
assertEquals(code, expectedExitCode);
}
Deno.test("process.exitCode in should change exit code", async () => {
await exitCodeTest(
"import process from 'node:process'; process.exitCode = 127;",
127,
);
await exitCodeTest(
"import process from 'node:process'; process.exitCode = 2.5;",
2,
);
await exitCodeTest(
"import process from 'node:process'; process.exitCode = '10';",
10,
);
await exitCodeTest(
"import process from 'node:process'; process.exitCode = '0x10';",
16,
);
await exitCodeTest(
"import process from 'node:process'; process.exitCode = NaN;",
0,
);
});
Deno.test("Deno.exit should override process exit", async () => {
await exitCodeTest(
"import process from 'node:process'; process.exitCode = 10; Deno.exit(12);",
12,
);
});
Deno.test("process.config", () => {