summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--testament/tester.nim30
1 files changed, 18 insertions, 12 deletions
diff --git a/testament/tester.nim b/testament/tester.nim
index bdf296bc6..1e5bc875a 100644
--- a/testament/tester.nim
+++ b/testament/tester.nim
@@ -146,16 +146,19 @@ proc callCompiler(cmdTemplate, filename, options: string,
   var tmpl = ""
   var x = newStringOfCap(120)
   result.nimout = ""
-  while outp.readLine(x.TaintedString) or running(p):
-    result.nimout.add(x & "\n")
-    if x =~ pegOfInterest:
-      # `err` should contain the last error/warning message
-      err = x
-    elif x =~ pegLineTemplate and err == "":
-      # `tmpl` contains the last template expansion before the error
-      tmpl = x
-    elif x =~ pegSuccess:
-      suc = x
+  while true:
+    if outp.readLine(x.TaintedString):
+      result.nimout.add(x & "\n")
+      if x =~ pegOfInterest:
+        # `err` should contain the last error/warning message
+        err = x
+      elif x =~ pegLineTemplate and err == "":
+        # `tmpl` contains the last template expansion before the error
+        tmpl = x
+      elif x =~ pegSuccess:
+        suc = x
+    elif not running(p):
+      break
   close(p)
   result.msg = ""
   result.file = ""
@@ -193,8 +196,11 @@ proc callCCompiler(cmdTemplate, filename, options: string,
   result.file = ""
   result.output = ""
   result.line = -1
-  while outp.readLine(x.TaintedString) or running(p):
-    result.nimout.add(x & "\n")
+  while true:
+    if outp.readLine(x.TaintedString):
+      result.nimout.add(x & "\n")
+    elif not running(p):
+      break
   close(p)
   if p.peekExitCode == 0:
     result.err = reSuccess