diff options
author | Araq <rumpf_a@web.de> | 2011-02-23 00:15:36 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-02-23 00:15:36 +0100 |
commit | 82514c9c1cd4f9f907501e493c7b046a66b3944a (patch) | |
tree | 2d5349e2b5f5e26b36d8838a5f4999296f98134a /tests/tester.nim | |
parent | 310faca724a4d4a28a3fbce753fff37ad33b5f38 (diff) | |
download | Nim-82514c9c1cd4f9f907501e493c7b046a66b3944a.tar.gz |
suggest: improvements
Diffstat (limited to 'tests/tester.nim')
-rwxr-xr-x | tests/tester.nim | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/tests/tester.nim b/tests/tester.nim index 37dbf1388..93fc3f433 100755 --- a/tests/tester.nim +++ b/tests/tester.nim @@ -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: - 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: + parseSpecAux: case normalize(e.key) of "file": result.file = e.value + of "line": discard parseInt(e.value, result.line) 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) |