From 2df5a6f863065918c005207e0b8e9763e0e1aa8c Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 20 Feb 2017 06:18:59 +0100 Subject: nimsuggest: make all tests green --- tools/nimsuggest/nimsuggest.nim | 8 ++++-- tools/nimsuggest/tester.nim | 57 ++++++++++++++++++++--------------------- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/tools/nimsuggest/nimsuggest.nim b/tools/nimsuggest/nimsuggest.nim index 9e5538a15..d78f51299 100644 --- a/tools/nimsuggest/nimsuggest.nim +++ b/tools/nimsuggest/nimsuggest.nim @@ -402,14 +402,18 @@ proc mainThread(graph: ModuleGraph; cache: IdentCache) = logStr(PStrEntry(it).data) it = it.next - msgs.writelnHook = writelnToChannel + proc wrHook(line: string) {.closure.} = + if gMode == mepc: discard + else: writelnToChannel(line) + + msgs.writelnHook = wrHook suggestionResultHook = sugResultHook graph.doStopCompile = proc (): bool = requests.peek() > 0 var idle = 0 while true: let (hasData, req) = requests.tryRecv() if hasData: - msgs.writelnHook = writelnToChannel + msgs.writelnHook = wrHook suggestionResultHook = sugResultHook execCmd(req, graph, cache) diff --git a/tools/nimsuggest/tester.nim b/tools/nimsuggest/tester.nim index a773b1b36..4e12f329f 100644 --- a/tools/nimsuggest/tester.nim +++ b/tools/nimsuggest/tester.nim @@ -176,7 +176,7 @@ proc sexpToAnswer(s: SexpNode): string = let typ = a[4].getStr let line = a[5].getNum let col = a[6].getNum - let doc = a[7].getStr.escapeJson + let doc = a[7].getStr.escape result.add section result.add '\t' result.add symk @@ -201,6 +201,20 @@ proc sexpToAnswer(s: SexpNode): string = result.add "100" result.add '\L' +proc doReport(filename, answer, resp: string; report: var string) = + if resp != answer and not smartCompare(resp, answer): + report.add "\nTest failed: " & filename + var hasDiff = false + for i in 0..min(resp.len-1, answer.len-1): + if resp[i] != answer[i]: + report.add "\n Expected: " & resp.substr(i) + report.add "\n But got: " & answer.substr(i) + hasDiff = true + break + if not hasDiff: + report.add "\n Expected: " & resp + report.add "\n But got: " & answer + proc runEpcTest(filename: string): int = let s = parseTest filename for cmd in s.startup: @@ -224,19 +238,10 @@ proc runEpcTest(filename: string): int = for req, resp in items(s.script): if not runCmd(req, s.dest): socket.sendEpcStr(req) - var answer = sexpToAnswer(parseSexp(socket.recvEpc())) - if resp != answer and not smartCompare(resp, answer): - report.add "\nTest failed: " & filename - var hasDiff = false - for i in 0..min(resp.len-1, answer.len-1): - if resp[i] != answer[i]: - report.add "\n Expected: " & resp.substr(i) - report.add "\n But got: " & answer.substr(i) - hasDiff = true - break - if not hasDiff: - report.add "\n Expected: " & resp - report.add "\n But got: " & answer + let sx = parseSexp(socket.recvEpc()) + if not req.startsWith("mod "): + let answer = sexpToAnswer(sx) + doReport(filename, answer, resp, report) else: raise newException(ValueError, "cannot read port number") finally: @@ -272,18 +277,7 @@ proc runTest(filename: string): int = if a == DummyEof: break answer.add a answer.add '\L' - if resp != answer and not smartCompare(resp, answer): - report.add "\nTest failed: " & filename - var hasDiff = false - for i in 0..min(resp.len-1, answer.len-1): - if resp[i] != answer[i]: - report.add "\n Expected: " & resp.substr(i) - report.add "\n But got: " & answer.substr(i) - hasDiff = true - break - if not hasDiff: - report.add "\n Expected: " & resp - report.add "\n But got: " & answer + doReport(filename, answer, resp, report) finally: inp.writeLine("quit") inp.flush() @@ -295,11 +289,16 @@ proc runTest(filename: string): int = proc main() = var failures = 0 - for x in walkFiles(getAppDir() / "tests/t*.nim"): - echo "Test ", x + when false: + let x = getAppDir() / "tests/twithin_macro.nim" let xx = expandFilename x - failures += runTest(xx) failures += runEpcTest(xx) + else: + for x in walkFiles(getAppDir() / "tests/t*.nim"): + echo "Test ", x + let xx = expandFilename x + failures += runTest(xx) + failures += runEpcTest(xx) if failures > 0: quit 1 -- cgit 1.4.1-2-gfad0