summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-05-09 22:29:41 +0200
committerAraq <rumpf_a@web.de>2011-05-09 22:29:41 +0200
commit5c9552437cd44726e6bb75e46a3e39d9eb445bf2 (patch)
treee35622e89511254c2977af25877c93fc7b0389da
parentf717f1e628782cc54a69ce589249d694a77015bb (diff)
parent74b1b28f7e8d832a002502011e800405dedfb6dd (diff)
downloadNim-5c9552437cd44726e6bb75e46a3e39d9eb445bf2.tar.gz
Merge branch 'master' of github.com:Araq/Nimrod
-rwxr-xr-xtests/tester.nim27
1 files changed, 22 insertions, 5 deletions
diff --git a/tests/tester.nim b/tests/tester.nim
index 6b43b30c7..1c8ce6fe2 100755
--- a/tests/tester.nim
+++ b/tests/tester.nim
@@ -10,11 +10,12 @@
 ## This program verifies Nimrod against the testcases.
 
 import
-  parseutils, strutils, pegs, os, osproc, streams, parsecfg, browsers
+  parseutils, strutils, pegs, os, osproc, streams, parsecfg, browsers, json
 
 const
   cmdTemplate = r"nimrod cc --hints:on $# $#"
   resultsFile = "testresults.html"
+  jsonFile = "testresults.json"
 
 type
   TTestAction = enum
@@ -180,10 +181,9 @@ proc listResults(reject, compile, run: TResults) =
   s.add($run)
   s.add(TableHeader4 & run.data & TableFooter)
   s.add("</html>")
-  var outp: TFile
-  if open(outp, resultsFile, fmWrite):
-    write(outp, s)
-    close(outp)
+  var outp = open(resultsFile, fmWrite)
+  write(outp, s)
+  close(outp)
 
 proc cmpMsgs(r: var TResults, expected, given: TSpec, test: string) = 
   if strip(expected.msg) notin strip(given.msg):
@@ -266,6 +266,22 @@ proc compileExample(r: var TResults, pattern, options: string) =
 proc testLib(r: var TResults, options: string) =
   nil
 
+proc toJson(res: TResults): PJsonNode =
+  result = newJObject()
+  result["total"] = newJInt(res.total)
+  result["passed"] = newJInt(res.passed)
+  result["skipped"] = newJInt(res.skipped)
+
+proc outputJSON(reject, compile, run: TResults) =
+  var doc = newJObject()
+  doc["reject"] = toJson(reject)
+  doc["compile"] = toJson(compile)
+  doc["run"] = toJson(run)
+  var s = pretty(doc)
+  var outp = open(jsonFile, fmWrite)
+  write(outp, s)
+  close(outp)
+
 var options = ""
 var rejectRes = initResults()
 var compileRes = initResults()
@@ -281,5 +297,6 @@ compileExample(compileRes, "examples/*.nim", options)
 compileExample(compileRes, "examples/gtk/*.nim", options)
 run(runRes, "tests/accept/run", options)
 listResults(rejectRes, compileRes, runRes)
+outputJSON(rejectRes, compileRes, runRes)
 openDefaultBrowser(resultsFile)