summaryrefslogtreecommitdiff
path: root/cli/tests/unit_node
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit_node')
-rw-r--r--cli/tests/unit_node/child_process_test.ts57
1 files changed, 56 insertions, 1 deletions
diff --git a/cli/tests/unit_node/child_process_test.ts b/cli/tests/unit_node/child_process_test.ts
index 9abd5c1e6..a282977e0 100644
--- a/cli/tests/unit_node/child_process_test.ts
+++ b/cli/tests/unit_node/child_process_test.ts
@@ -13,7 +13,7 @@ import {
import { Deferred, deferred } from "../../../test_util/std/async/deferred.ts";
import * as path from "../../../test_util/std/path/mod.ts";
-const { spawn, execFile, execFileSync, ChildProcess } = CP;
+const { spawn, spawnSync, execFile, execFileSync, ChildProcess } = CP;
function withTimeout<T>(timeoutInMS = 10_000): Deferred<T> {
const promise = deferred<T>();
@@ -640,3 +640,58 @@ Deno.test({
assertEquals(cp.signalCode, "SIGIOT");
},
});
+
+// Regression test for https://github.com/denoland/deno/issues/20373
+Deno.test(async function undefinedValueInEnvVar() {
+ const promise = withTimeout<string>();
+ const env = spawn(
+ `"${Deno.execPath()}" eval -p "Deno.env.toObject().BAZ"`,
+ {
+ env: {
+ BAZ: "BAZ",
+ NO_COLOR: "true",
+ UNDEFINED_ENV: undefined,
+ // deno-lint-ignore no-explicit-any
+ NULL_ENV: null as any,
+ },
+ shell: true,
+ },
+ );
+ try {
+ let envOutput = "";
+
+ assert(env.stdout);
+ env.on("error", (err: Error) => promise.reject(err));
+ env.stdout.on("data", (data) => {
+ envOutput += data;
+ });
+ env.on("close", () => {
+ promise.resolve(envOutput.trim());
+ });
+ await promise;
+ } finally {
+ env.kill();
+ }
+ const value = await promise;
+ assertEquals(value, "BAZ");
+});
+
+// Regression test for https://github.com/denoland/deno/issues/20373
+Deno.test(function spawnSyncUndefinedValueInEnvVar() {
+ const ret = spawnSync(
+ `"${Deno.execPath()}" eval -p "Deno.env.toObject().BAZ"`,
+ {
+ env: {
+ BAZ: "BAZ",
+ NO_COLOR: "true",
+ UNDEFINED_ENV: undefined,
+ // deno-lint-ignore no-explicit-any
+ NULL_ENV: null as any,
+ },
+ shell: true,
+ },
+ );
+
+ assertEquals(ret.status, 0);
+ assertEquals(ret.stdout.toString("utf-8").trim(), "BAZ");
+});