summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJuan Carlos <juancarlospaco@gmail.com>2021-03-03 07:58:05 -0300
committerGitHub <noreply@github.com>2021-03-03 11:58:05 +0100
commit4982d1c66212de2762eb4ebff183eaa09b00b1f8 (patch)
treefa895a72c221e29718ea21e23b03bc45b0b5148f
parentec068a26870e5e00c87b05495622aae554c9a63a (diff)
downloadNim-4982d1c66212de2762eb4ebff183eaa09b00b1f8.tar.gz
https://github.com/nim-lang/Nim/pull/15826/files#r585368355 (#17233)
-rw-r--r--lib/pure/includes/osenv.nim5
-rw-r--r--tests/stdlib/tos.nim6
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", "/")