summary refs log tree commit diff stats
path: root/tests/tester.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-02-23 00:15:36 +0100
committerAraq <rumpf_a@web.de>2011-02-23 00:15:36 +0100
commit82514c9c1cd4f9f907501e493c7b046a66b3944a (patch)
tree2d5349e2b5f5e26b36d8838a5f4999296f98134a /tests/tester.nim
parent310faca724a4d4a28a3fbce753fff37ad33b5f38 (diff)
downloadNim-82514c9c1cd4f9f907501e493c7b046a66b3944a.tar.gz
suggest: improvements
Diffstat (limited to 'tests/tester.nim')
-rwxr-xr-xtests/tester.nim43
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)