testament: add nimoutFull: bool spec (#17867)

* testament: add `nimoutFull: bool` spec
* PRTEMP
* works
* cleanup
* add test for #12741
* PRTEMP failing test
* remove unrelated changes
* changelog
This commit is contained in:
Timothee Cour 2021-04-27 02:11:28 -07:00 • committed by GitHub
commit a236002e54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 43 additions and 9 deletions

View file

@ -371,12 +371,20 @@ proc checkForInlineErrors(r: var TResults, expected, given: TSpec, test: TTest,
r.addResult(test, target, "", given.msg, reSuccess)
inc(r.passed)
proc nimoutCheck(expected, given: TSpec): bool =
result = true
if expected.nimoutFull:
if expected.nimout != given.nimout:
result = false
elif expected.nimout.len > 0 and not greedyOrderedSubsetLines(expected.nimout, given.nimout):
result = false
proc cmpMsgs(r: var TResults, expected, given: TSpec, test: TTest, target: TTarget) =
if expected.inlineErrors.len > 0:
checkForInlineErrors(r, expected, given, test, target)
elif strip(expected.msg) notin strip(given.msg):
r.addResult(test, target, expected.msg, given.msg, reMsgsDiffer)
elif expected.nimout.len > 0 and not greedyOrderedSubsetLines(expected.nimout, given.nimout):
elif not nimoutCheck(expected, given):
r.addResult(test, target, expected.nimout, given.nimout, reMsgsDiffer)
elif extractFilename(expected.file) != extractFilename(given.file) and
"internal error:" notin expected.msg:
@ -424,10 +432,6 @@ proc codegenCheck(test: TTest, target: TTarget, spec: TSpec, expectedMsg: var st
given.err = reCodeNotFound
echo getCurrentExceptionMsg()
proc nimoutCheck(test: TTest; expectedNimout: string; given: var TSpec) =
if not greedyOrderedSubsetLines(expectedNimout, given.nimout):
given.err = reMsgsDiffer
proc compilerOutputTests(test: TTest, target: TTarget, given: var TSpec,
expected: TSpec; r: var TResults) =
var expectedmsg: string = ""
@ -436,10 +440,10 @@ proc compilerOutputTests(test: TTest, target: TTarget, given: var TSpec,
if expected.needsCodegenCheck:
codegenCheck(test, target, expected, expectedmsg, given)
givenmsg = given.msg
if expected.nimout.len > 0:
if not nimoutCheck(expected, given):
given.err = reMsgsDiffer
expectedmsg = expected.nimout
givenmsg = given.nimout.strip
nimoutCheck(test, expectedmsg, given)
else:
givenmsg = "$ " & given.cmd & '\n' & given.nimout
if given.err == reSuccess: inc(r.passed)