diff options
-rw-r--r-- | lib/pure/includes/osenv.nim | 5 | ||||
-rw-r--r-- | tests/stdlib/tos.nim | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/pure/includes/osenv.nim b/lib/pure/includes/osenv.nim index 92ba3829f..d0c92d566 100644 --- a/lib/pure/includes/osenv.nim +++ b/lib/pure/includes/osenv.nim @@ -5,9 +5,10 @@ when not declared(os) and not declared(ospaths): when defined(nodejs): proc getEnv*(key: string, default = ""): string {.tags: [ReadEnvEffect].} = - var ret: cstring + var ret = default.cstring let key2 = key.cstring - {.emit: "`ret` = process.env[`key2`];".} + {.emit: "const value = process.env[`key2`];".} + {.emit: "if (value !== undefined) { `ret` = value };".} result = $ret proc existsEnv*(key: string): bool {.tags: [ReadEnvEffect].} = diff --git a/tests/stdlib/tos.nim b/tests/stdlib/tos.nim index b47412a62..cf6fa20fa 100644 --- a/tests/stdlib/tos.nim +++ b/tests/stdlib/tos.nim @@ -520,7 +520,7 @@ block ospaths: # but not `./foo/bar` and `foo/bar` doAssert joinPath(".", "/lib") == unixToNativePath"./lib" doAssert joinPath(".","abc") == unixToNativePath"./abc" - + # cases related to issue #13455 doAssert joinPath("foo", "", "") == "foo" doAssert joinPath("foo", "") == "foo" @@ -566,6 +566,10 @@ block osenv: doAssert existsEnv(dummyEnvVar) == false delEnv(dummyEnvVar) # deleting an already deleted env var doAssert existsEnv(dummyEnvVar) == false + block: + doAssert getEnv("DUMMY_ENV_VAR_NONEXISTENT", "") == "" + doAssert getEnv("DUMMY_ENV_VAR_NONEXISTENT", " ") == " " + doAssert getEnv("DUMMY_ENV_VAR_NONEXISTENT", "Arrakis") == "Arrakis" block isRelativeTo: doAssert isRelativeTo("/foo", "/") |