Merge pull request #2300 from reactormonk/better-tester-messages

fixed tester back up
This commit is contained in:
Andreas Rumpf 2015-03-09 22:58:59 +01:00
commit 3e82941f25

View file

@ -142,7 +142,6 @@ proc generatedFile(path, name: string, target: TTarget): string =
name.changeFileExt(ext) name.changeFileExt(ext)
proc codegenCheck(test: TTest, check: string, given: var TSpec, r: var TResults) = proc codegenCheck(test: TTest, check: string, given: var TSpec, r: var TResults) =
if check.len > 0:
try: try:
let (path, name, ext2) = test.name.splitFile let (path, name, ext2) = test.name.splitFile
let genFile = generatedFile(path, name, test.target) let genFile = generatedFile(path, name, test.target)
@ -154,16 +153,12 @@ proc codegenCheck(test: TTest, check: string, given: var TSpec, r: var TResults)
given.err = reInvalidPeg given.err = reInvalidPeg
except IOError: except IOError:
given.err = reCodeNotFound given.err = reCodeNotFound
r.addResult(test, "", given.msg, given.err)
proc nimoutCheck(test: TTest; expectedNimout: string; given: var TSpec, r: var TResults) = proc nimoutCheck(test: TTest; expectedNimout: string; given: var TSpec, r: var TResults) =
if expectedNimout.len > 0:
let exp = expectedNimout.strip.replace("\C\L", "\L") let exp = expectedNimout.strip.replace("\C\L", "\L")
let giv = given.nimout.strip.replace("\C\L", "\L") let giv = given.nimout.strip.replace("\C\L", "\L")
if exp notin giv: if exp notin giv:
given.err = reMsgsDiffer given.err = reMsgsDiffer
r.addResult(test, exp, giv, given.err)
proc makeDeterministic(s: string): string = proc makeDeterministic(s: string): string =
var x = splitLines(s) var x = splitLines(s)
@ -171,11 +166,19 @@ proc makeDeterministic(s: string): string =
result = join(x, "\n") result = join(x, "\n")
proc compilerOutputTests(test: TTest, given: var TSpec, expected: TSpec, r: var TResults) = proc compilerOutputTests(test: TTest, given: var TSpec, expected: TSpec, r: var TResults) =
var expectedmsg: string = ""
var givenmsg: string = ""
if given.err == reSuccess: if given.err == reSuccess:
codegenCheck(test, expected.ccodeCheck, given, r) if expected.ccodeCheck.len > 0:
nimoutCheck(test, expected.nimout, given, r) codegenCheck(test, expectedmsg, given, r)
expectedmsg = expected.ccodeCheck
givenmsg = given.msg
if expected.nimout.len > 0:
expectedmsg = expected.nimout
givenmsg = given.nimout.strip
nimoutCheck(test, expectedmsg, given, r)
if given.err == reSuccess: inc(r.passed) if given.err == reSuccess: inc(r.passed)
r.addResult(test, expectedmsg, givenmsg, given.err)
proc testSpec(r: var TResults, test: TTest) = proc testSpec(r: var TResults, test: TTest) =
# major entry point for a single test # major entry point for a single test