This commit is contained in:
Araq 2015-04-24 21:53:40 +02:00
commit 6725aa3634
8 changed files with 76 additions and 1834 deletions

View file

@ -10,13 +10,14 @@
import parseutils, strutils, os, osproc, streams, parsecfg
const
cmdTemplate* = r"nim $target --hints:on $options $file"
cmdTemplate* = r"nim $target --hints:on -d:testing $options $file"
type
TTestAction* = enum
actionCompile = "compile"
actionRun = "run"
actionReject = "reject"
actionRunNoSpec = "runNoSpec"
TResultEnum* = enum
reNimcCrash, # nim compiler seems to have crashed
reMsgsDiffer, # error messages differ
@ -78,7 +79,7 @@ proc extractSpec(filename: string): string =
when not defined(nimhygiene):
{.pragma: inject.}
template parseSpecAux(fillResult: stmt) {.immediate.} =
template parseSpecAux(fillResult: untyped) =
var ss = newStringStream(extractSpec(filename))
var p {.inject.}: CfgParser
open(p, ss, filename, 1)
@ -92,8 +93,7 @@ template parseSpecAux(fillResult: stmt) {.immediate.} =
fillResult
close(p)
proc parseSpec*(filename: string): TSpec =
result.file = filename
proc specDefaults*(result: var TSpec) =
result.msg = ""
result.outp = ""
result.nimout = ""
@ -101,6 +101,10 @@ proc parseSpec*(filename: string): TSpec =
result.cmd = cmdTemplate
result.line = 0
result.column = 0
proc parseSpec*(filename: string): TSpec =
specDefaults(result)
result.file = filename
parseSpecAux:
case normalize(e.key)
of "action":
@ -112,7 +116,7 @@ proc parseSpec*(filename: string): TSpec =
of "file": result.file = e.value
of "line": discard parseInt(e.value, result.line)
of "column": discard parseInt(e.value, result.column)
of "output":
of "output":
result.action = actionRun
result.outp = e.value
of "outputsub":
@ -121,7 +125,7 @@ proc parseSpec*(filename: string): TSpec =
result.substr = true
of "sortoutput":
result.sortoutput = parseCfgBool(e.value)
of "exitcode":
of "exitcode":
discard parseInt(e.value, result.exitCode)
of "msg":
result.msg = e.value