suggest: improvements
This commit is contained in:
parent
310faca724
commit
82514c9c1c
4 changed files with 70 additions and 39 deletions
|
|
@ -17,14 +17,14 @@ const
|
|||
resultsFile = "testresults.html"
|
||||
|
||||
type
|
||||
TMsg = tuple[
|
||||
file: string,
|
||||
line: int,
|
||||
msg: string,
|
||||
err: bool,
|
||||
disabled: bool]
|
||||
TOutp = tuple[file, outp: string, disabled: bool]
|
||||
TResults = object
|
||||
TSpec {.pure.} = object
|
||||
file: string
|
||||
outp: string
|
||||
line: int
|
||||
msg: string
|
||||
err: bool
|
||||
disabled: bool
|
||||
TResults {.pure.} = object
|
||||
total, passed, skipped: int
|
||||
data: string
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ proc extractSpec(filename: string): string =
|
|||
else:
|
||||
echo "warning: file does not contain spec: " & filename
|
||||
|
||||
template parseTest(fillResult: stmt) =
|
||||
template parseSpecAux(fillResult: stmt) =
|
||||
var ss = newStringStream(extractSpec(filename))
|
||||
var p: TCfgParser
|
||||
open(p, ss, filename, 1)
|
||||
|
|
@ -63,25 +63,17 @@ template parseTest(fillResult: stmt) =
|
|||
fillResult
|
||||
close(p)
|
||||
|
||||
proc parseRejectTest(filename: string): TMsg =
|
||||
proc parseSpec(filename: string): TSpec =
|
||||
result.file = filename
|
||||
result.err = true
|
||||
result.msg = ""
|
||||
parseTest:
|
||||
result.outp = ""
|
||||
parseSpecAux:
|
||||
case normalize(e.key)
|
||||
of "file": result.file = e.value
|
||||
of "line": discard parseInt(e.value, result.line)
|
||||
of "errormsg": result.msg = e.value
|
||||
of "disabled": result.disabled = parseCfgBool(e.value)
|
||||
else: echo ignoreMsg(p, e)
|
||||
|
||||
proc parseRunTest(filename: string): TOutp =
|
||||
result.file = filename
|
||||
result.outp = ""
|
||||
parseTest:
|
||||
case normalize(e.key)
|
||||
of "file": result.file = e.value
|
||||
of "output": result.outp = e.value
|
||||
of "errormsg", "msg": result.msg = e.value
|
||||
of "disabled": result.disabled = parseCfgBool(e.value)
|
||||
else: echo ignoreMsg(p, e)
|
||||
|
||||
|
|
@ -96,7 +88,7 @@ var
|
|||
pegSuccess = peg"'Hint: operation successful'.*"
|
||||
pegOfInterest = pegLineError / pegOtherError / pegSuccess
|
||||
|
||||
proc callCompiler(filename, options: string): TMsg =
|
||||
proc callCompiler(filename, options: string): TSpec =
|
||||
var c = parseCmdLine(cmdTemplate % [options, filename])
|
||||
var a: seq[string] = @[] # slicing is not yet implemented :-(
|
||||
for i in 1 .. c.len-1: add(a, c[i])
|
||||
|
|
@ -111,6 +103,7 @@ proc callCompiler(filename, options: string): TMsg =
|
|||
s = x
|
||||
result.msg = ""
|
||||
result.file = ""
|
||||
result.outp = ""
|
||||
result.err = true
|
||||
result.line = -1
|
||||
if s =~ pegLineError:
|
||||
|
|
@ -171,7 +164,7 @@ proc listResults(reject, compile, run: TResults) =
|
|||
write(outp, s)
|
||||
close(outp)
|
||||
|
||||
proc cmpMsgs(r: var TResults, expected, given: TMsg, test: string) =
|
||||
proc cmpMsgs(r: var TResults, expected, given: TSpec, test: string) =
|
||||
inc(r.total)
|
||||
if strip(expected.msg) notin strip(given.msg):
|
||||
r.addResult(test, expected.msg, given.msg, false)
|
||||
|
|
@ -189,7 +182,7 @@ proc reject(r: var TResults, dir, options: string) =
|
|||
var t = extractFilename(test)
|
||||
inc(r.total)
|
||||
echo t
|
||||
var expected = parseRejectTest(test)
|
||||
var expected = parseSpec(test)
|
||||
if expected.disabled: inc(r.skipped)
|
||||
else:
|
||||
var given = callCompiler(test, options)
|
||||
|
|
@ -209,7 +202,7 @@ proc run(r: var TResults, dir, options: string) =
|
|||
var t = extractFilename(test)
|
||||
echo t
|
||||
inc(r.total)
|
||||
var expected = parseRunTest(test)
|
||||
var expected = parseSpec(test)
|
||||
if expected.disabled: inc(r.skipped)
|
||||
else:
|
||||
var given = callCompiler(test, options)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue