From 4982d1c66212de2762eb4ebff183eaa09b00b1f8 Mon Sep 17 00:00:00 2001 From: Juan Carlos Date: Wed, 3 Mar 2021 07:58:05 -0300 Subject: [PATCH] https://github.com/nim-lang/Nim/pull/15826/files#r585368355 (#17233) --- lib/pure/includes/osenv.nim | 5 +++-- 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 92ba3829f5..d0c92d5661 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 b47412a627..cf6fa20fa5 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", "/")