diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-12-02 11:03:37 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-02 16:03:37 +0000 |
commit | f29075ae4cf435032e410d582bdfa22b031e802c (patch) | |
tree | 30d3422ef4eb6c7b1b8de6d7ea784ba34ee76693 /cli/tests | |
parent | 61a4e88e380f3fe1a68f0c8e1dfe538a0d415c9a (diff) |
fix(node): setting process.exitCode should change exit code of process (#21429)
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/unit_node/process_test.ts | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/cli/tests/unit_node/process_test.ts b/cli/tests/unit_node/process_test.ts index 69af8a3ad..b9290fbac 100644 --- a/cli/tests/unit_node/process_test.ts +++ b/cli/tests/unit_node/process_test.ts @@ -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", () => { |