diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2015-04-21 08:51:16 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2015-04-21 08:51:16 +0200 |
commit | 3e2c086b1fa65361daa9272efeafc3d725f87818 (patch) | |
tree | f3b396a7f9ba1f0da0a6b440cc0c241e8a1eba1c /tests | |
parent | 248dc42aa5c18aae9d63c863998ca938593bc227 (diff) | |
parent | 505836385cbbfdc6a4a728b07dd1c528f59dc8d7 (diff) | |
download | Nim-3e2c086b1fa65361daa9272efeafc3d725f87818.tar.gz |
Merge pull request #2575 from nanoant/test-for-error-location-column
Tests: Optional error location column spec
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testament/specs.nim | 6 | ||||
-rw-r--r-- | tests/testament/tester.nim | 15 |
2 files changed, 15 insertions, 6 deletions
diff --git a/tests/testament/specs.nim b/tests/testament/specs.nim index 2a8a4ea24..8bf1a4ad7 100644 --- a/tests/testament/specs.nim +++ b/tests/testament/specs.nim @@ -42,7 +42,8 @@ type action*: TTestAction file*, cmd*: string outp*: string - line*, exitCode*: int + line*, column*: int + exitCode*: int msg*: string ccodeCheck*: string err*: TResultEnum @@ -98,6 +99,8 @@ proc parseSpec*(filename: string): TSpec = result.nimout = "" result.ccodeCheck = "" result.cmd = cmdTemplate + result.line = 0 + result.column = 0 parseSpecAux: case normalize(e.key) of "action": @@ -108,6 +111,7 @@ proc parseSpec*(filename: string): TSpec = else: echo ignoreMsg(p, e) of "file": result.file = e.value of "line": discard parseInt(e.value, result.line) + of "column": discard parseInt(e.value, result.column) of "output": result.action = actionRun result.outp = e.value diff --git a/tests/testament/tester.nim b/tests/testament/tester.nim index 7391b105e..ed39109ad 100644 --- a/tests/testament/tester.nim +++ b/tests/testament/tester.nim @@ -50,7 +50,7 @@ type let pegLineError = - peg"{[^(]*} '(' {\d+} ', ' \d+ ') ' ('Error') ':' \s* {.*}" + peg"{[^(]*} '(' {\d+} ', ' {\d+} ') ' ('Error') ':' \s* {.*}" pegOtherError = peg"'Error:' \s* {.*}" pegSuccess = peg"'Hint: operation successful'.*" pegOfInterest = pegLineError / pegOtherError @@ -77,11 +77,13 @@ proc callCompiler(cmdTemplate, filename, options: string, result.msg = "" result.file = "" result.outp = "" - result.line = -1 + result.line = 0 + result.column = 0 if err =~ pegLineError: result.file = extractFilename(matches[0]) result.line = parseInt(matches[1]) - result.msg = matches[2] + result.column = parseInt(matches[2]) + result.msg = matches[3] elif err =~ pegOtherError: result.msg = matches[0] elif suc =~ pegSuccess: @@ -130,8 +132,11 @@ proc cmpMsgs(r: var TResults, expected, given: TSpec, test: TTest) = elif extractFilename(expected.file) != extractFilename(given.file) and "internal error:" notin expected.msg: r.addResult(test, expected.file, given.file, reFilesDiffer) - elif expected.line != given.line and expected.line != 0: - r.addResult(test, $expected.line, $given.line, reLinesDiffer) + elif expected.line != given.line and expected.line != 0 or + expected.column != given.column and expected.column != 0: + r.addResult(test, $expected.line & ':' & $expected.column, + $given.line & ':' & $given.column, + reLinesDiffer) else: r.addResult(test, expected.msg, given.msg, reSuccess) inc(r.passed) |