Improve caasdriver output.

This commit is contained in:
Dominik Picheta 2014-06-16 23:36:11 +01:00
commit ebff5f1f28

View file

@ -106,7 +106,7 @@ proc close(session: var TNimrodSession) {.destructor.} =
if session.mode == CaasRun: if session.mode == CaasRun:
session.nim.close session.nim.close
proc doScenario(script: string, output: PStream, mode: TRunMode): bool = proc doScenario(script: string, output: PStream, mode: TRunMode, verbose: bool): bool =
result = true result = true
var f = open(script) var f = open(script)
@ -138,7 +138,7 @@ proc doScenario(script: string, output: PStream, mode: TRunMode): bool =
continue continue
elif line.startsWith(">"): elif line.startsWith(">"):
s.doCommand(line.substr(1).strip) s.doCommand(line.substr(1).strip)
output.writeln line, "\n", s.lastOutput output.writeln line, "\n", if verbose: s.lastOutput else: ""
else: else:
var expectMatch = true var expectMatch = true
var pattern = s.replaceVars(line) var pattern = s.replaceVars(line)
@ -155,13 +155,14 @@ proc doScenario(script: string, output: PStream, mode: TRunMode): bool =
output.writeln "FAILURE ", line output.writeln "FAILURE ", line
result = false result = false
iterator caasTestsRunner*(filter = ""): tuple[test, output: string, iterator caasTestsRunner*(filter = "", verbose = false): tuple[test,
status: bool, mode: TRunMode] = output: string, status: bool,
mode: TRunMode] =
for scenario in os.walkFiles(TesterDir / "caas/*.txt"): for scenario in os.walkFiles(TesterDir / "caas/*.txt"):
if filter.len > 0 and find(scenario, filter) == -1: continue if filter.len > 0 and find(scenario, filter) == -1: continue
for mode in modes: for mode in modes:
var outStream = newStringStream() var outStream = newStringStream()
let r = doScenario(scenario, outStream, mode) let r = doScenario(scenario, outStream, mode, verbose)
yield (scenario, outStream.data, r, mode) yield (scenario, outStream.data, r, mode)
when isMainModule: when isMainModule:
@ -179,9 +180,12 @@ when isMainModule:
if verbose and len(filter) > 0: if verbose and len(filter) > 0:
echo "Running only test cases matching filter '$1'" % [filter] echo "Running only test cases matching filter '$1'" % [filter]
for test, output, result, mode in caasTestsRunner(filter): for test, output, result, mode in caasTestsRunner(filter, verbose):
if not result or verbose: if not result or verbose:
echo test, "\n", output, "-> ", $mode, ":", $result, "\n-----" echo "Mode ", $mode, " (", if result: "succeeded)" else: "failed)"
echo test
echo output
echo "---------\n"
if not result: if not result:
failures += 1 failures += 1