mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
* js -d:nodejs now supports osenv: `getEnv`, `putEnv`, `envPairs`, `delEnv`, `existsEnv` * refactor to osenv * fix for js (without -d:nodejs) + VM Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
48 lines
1.2 KiB
Nim
48 lines
1.2 KiB
Nim
static: doAssert defined(nodejs)
|
|
|
|
import os
|
|
|
|
block:
|
|
doAssert "./foo//./bar/".normalizedPath == "foo/bar"
|
|
doAssert relativePath(".//foo/bar", "foo") == "bar"
|
|
doAssert "/".isAbsolute
|
|
doAssert not "".isAbsolute
|
|
doAssert not ".".isAbsolute
|
|
doAssert not "foo".isAbsolute
|
|
doAssert relativePath("", "bar") == ""
|
|
doAssert normalizedPath(".///foo//./") == "foo"
|
|
let cwd = getCurrentDir()
|
|
|
|
let isWindows = '\\' in cwd
|
|
# defined(windows) doesn't work with -d:nodejs but should
|
|
# these actually break because of that (see https://github.com/nim-lang/Nim/issues/13469)
|
|
if not isWindows:
|
|
doAssert cwd.isAbsolute
|
|
doAssert relativePath(getCurrentDir() / "foo", "bar") == "../foo"
|
|
|
|
import std/sequtils
|
|
|
|
template main =
|
|
putEnv("foo", "bar")
|
|
doAssert getEnv("foo") == "bar"
|
|
doAssert existsEnv("foo")
|
|
|
|
putEnv("foo", "")
|
|
doAssert existsEnv("foo")
|
|
putEnv("foo", "bar2")
|
|
doAssert getEnv("foo") == "bar2"
|
|
|
|
when nimvm:
|
|
discard
|
|
else:
|
|
# need support in vmops: envPairs, delEnv
|
|
let s = toSeq(envPairs())
|
|
doAssert ("foo", "bar2") in s
|
|
doAssert ("foo", "bar") notin s
|
|
|
|
delEnv("foo")
|
|
doAssert not existsEnv("foo")
|
|
|
|
static: main()
|
|
main()
|