add getCurrentCompilerExe to vmops (eg allows to get nim compiler at CT); add tests for vmops (#9925)

This commit is contained in:
Timothee Cour 2018-12-18 00:07:12 -08:00 • committed by Andreas Rumpf
commit c4e3c4ca2d
6 changed files with 65 additions and 2 deletions

View file

@ -10,6 +10,8 @@ import os
template getScriptDir(): string =
parentDir(instantiationInfo(-1, true).filename)
# See also simpler test in Nim/tests/vm/tvmops.nim for a simpler
# cross platform way.
block gorge:
const
execName = when defined(windows): "tgorge.bat" else: "./tgorge.sh"

47
tests/vm/tvmops.nim Normal file
View file

@ -0,0 +1,47 @@
#[
test for vmops.nim
]#
import os
import math
import strutils
template forceConst(a: untyped): untyped =
## Force evaluation at CT, useful for example here:
## `callFoo(forceConst(getBar1()), getBar2())`
## instead of:
## block:
## const a = getBar1()
## `callFoo(a, getBar2())`
const ret = a
ret
static:
# TODO: add more tests
block: #getAppFilename, gorgeEx, gorge
const nim = getCurrentCompilerExe()
let ret = gorgeEx(nim & " --version")
doAssert ret.exitCode == 0
doAssert ret.output.contains "Nim Compiler"
let ret2 = gorgeEx(nim & " --unexistant")
doAssert ret2.exitCode != 0
let output3 = gorge(nim & " --version")
doAssert output3.contains "Nim Compiler"
block:
const key = "D20181210T175037"
const val = "foo"
putEnv(key, val)
doAssert existsEnv(key)
doAssert getEnv(key) == val
block:
# sanity check (we probably don't need to test for all ops)
const a1 = arcsin 0.3
let a2 = arcsin 0.3
doAssert a1 == a2
block:
# Check against bugs like #9176
doAssert getCurrentCompilerExe() == forceConst(getCurrentCompilerExe())
if false: #pending #9176
doAssert gorgeEx("unexistant") == forceConst(gorgeEx("unexistant"))