diff options
author | Araq <rumpf_a@web.de> | 2015-04-24 21:53:40 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-04-25 23:16:59 +0200 |
commit | 6725aa363426db74d44df29d74fca0ca6e227bbe (patch) | |
tree | 482596e5319b8a189449e2496d30246a339389c3 /tests | |
parent | 2c91e999e29208f89ab6b0995b6942b69a1e23e3 (diff) | |
download | Nim-6725aa363426db74d44df29d74fca0ca6e227bbe.tar.gz |
fixes #2517
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testament/categories.nim | 2 | ||||
-rw-r--r-- | tests/testament/specs.nim | 16 | ||||
-rw-r--r-- | tests/testament/tester.nim | 9 |
3 files changed, 18 insertions, 9 deletions
diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index 4476fccf2..07a2421a6 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -226,7 +226,7 @@ proc testStdlib(r: var TResults, pattern, options: string, cat: Category) = for test in os.walkFiles(pattern): let contents = readFile(test).string if contents.contains("when isMainModule"): - testSpec r, makeTest(test, options, cat, actionRun) + testSpec r, makeTest(test, options, cat, actionRunNoSpec) else: testNoSpec r, makeTest(test, options, cat, actionCompile) diff --git a/tests/testament/specs.nim b/tests/testament/specs.nim index 8bf1a4ad7..9306bf025 100644 --- a/tests/testament/specs.nim +++ b/tests/testament/specs.nim @@ -10,13 +10,14 @@ import parseutils, strutils, os, osproc, streams, parsecfg const - cmdTemplate* = r"nim $target --hints:on $options $file" + cmdTemplate* = r"nim $target --hints:on -d:testing $options $file" type TTestAction* = enum actionCompile = "compile" actionRun = "run" actionReject = "reject" + actionRunNoSpec = "runNoSpec" TResultEnum* = enum reNimcCrash, # nim compiler seems to have crashed reMsgsDiffer, # error messages differ @@ -78,7 +79,7 @@ proc extractSpec(filename: string): string = when not defined(nimhygiene): {.pragma: inject.} -template parseSpecAux(fillResult: stmt) {.immediate.} = +template parseSpecAux(fillResult: untyped) = var ss = newStringStream(extractSpec(filename)) var p {.inject.}: CfgParser open(p, ss, filename, 1) @@ -92,8 +93,7 @@ template parseSpecAux(fillResult: stmt) {.immediate.} = fillResult close(p) -proc parseSpec*(filename: string): TSpec = - result.file = filename +proc specDefaults*(result: var TSpec) = result.msg = "" result.outp = "" result.nimout = "" @@ -101,6 +101,10 @@ proc parseSpec*(filename: string): TSpec = result.cmd = cmdTemplate result.line = 0 result.column = 0 + +proc parseSpec*(filename: string): TSpec = + specDefaults(result) + result.file = filename parseSpecAux: case normalize(e.key) of "action": @@ -112,7 +116,7 @@ proc parseSpec*(filename: string): TSpec = of "file": result.file = e.value of "line": discard parseInt(e.value, result.line) of "column": discard parseInt(e.value, result.column) - of "output": + of "output": result.action = actionRun result.outp = e.value of "outputsub": @@ -121,7 +125,7 @@ proc parseSpec*(filename: string): TSpec = result.substr = true of "sortoutput": result.sortoutput = parseCfgBool(e.value) - of "exitcode": + of "exitcode": discard parseInt(e.value, result.exitCode) of "msg": result.msg = e.value diff --git a/tests/testament/tester.nim b/tests/testament/tester.nim index ed39109ad..b3e65959a 100644 --- a/tests/testament/tester.nim +++ b/tests/testament/tester.nim @@ -196,7 +196,12 @@ proc testSpec(r: var TResults, test: TTest) = let tname = test.name.addFileExt(".nim") inc(r.total) styledEcho "Processing ", fgCyan, extractFilename(tname) - var expected = parseSpec(tname) + var expected: TSpec + if test.action != actionRunNoSpec: + expected = parseSpec(tname) + else: + specDefaults expected + expected.action = actionRunNoSpec if expected.err == reIgnored: r.addResult(test, "", "", reIgnored) inc(r.skipped) @@ -206,7 +211,7 @@ proc testSpec(r: var TResults, test: TTest) = var given = callCompiler(expected.cmd, test.name, test.options & " --hint[Path]:off --hint[Processing]:off", test.target) compilerOutputTests(test, given, expected, r) - of actionRun: + of actionRun, actionRunNoSpec: var given = callCompiler(expected.cmd, test.name, test.options, test.target) if given.err != reSuccess: |