the tester now produces a diff in the JSON
This commit is contained in:
parent
4dae4fafe9
commit
f637c36a7a
1 changed files with 35 additions and 9 deletions
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
## HTML generator for the tester.
|
## HTML generator for the tester.
|
||||||
|
|
||||||
import db_sqlite, cgi, backend, strutils
|
import db_sqlite, cgi, backend, strutils, json
|
||||||
|
|
||||||
const
|
const
|
||||||
TableHeader = """<table border="1">
|
TableHeader = """<table border="1">
|
||||||
|
|
@ -114,8 +114,6 @@ proc getCommit(db: TDbConn, c: int): string =
|
||||||
for thisCommit in db.rows(sql"select id from [Commit] order by id desc"):
|
for thisCommit in db.rows(sql"select id from [Commit] order by id desc"):
|
||||||
if commit == 0: result = thisCommit[0]
|
if commit == 0: result = thisCommit[0]
|
||||||
inc commit
|
inc commit
|
||||||
if result.isNil:
|
|
||||||
quit "cannot determine commit " & $c
|
|
||||||
|
|
||||||
proc generateHtml*(filename: string, commit: int) =
|
proc generateHtml*(filename: string, commit: int) =
|
||||||
const selRow = """select name, category, target, action,
|
const selRow = """select name, category, target, action,
|
||||||
|
|
@ -161,20 +159,48 @@ proc generateHtml*(filename: string, commit: int) =
|
||||||
close(outfile)
|
close(outfile)
|
||||||
|
|
||||||
proc generateJson*(filename: string, commit: int) =
|
proc generateJson*(filename: string, commit: int) =
|
||||||
const selRow = """select count(*),
|
const
|
||||||
|
selRow = """select count(*),
|
||||||
sum(result = 'reSuccess'),
|
sum(result = 'reSuccess'),
|
||||||
sum(result = 'reIgnored')
|
sum(result = 'reIgnored')
|
||||||
from TestResult
|
from TestResult
|
||||||
where [commit] = ? and machine = ?
|
where [commit] = ? and machine = ?
|
||||||
order by category"""
|
order by category"""
|
||||||
|
selDiff = """select A.category || '/' || A.target || '/' || A.name,
|
||||||
|
A.result,
|
||||||
|
B.result
|
||||||
|
from TestResult A
|
||||||
|
inner join TestResult B
|
||||||
|
on A.name = B.name and A.category = B.category
|
||||||
|
where A.[commit] = ? and B.[commit] = ? and A.machine = ?
|
||||||
|
and A.result != B.result"""
|
||||||
var db = open(connection="testament.db", user="testament", password="",
|
var db = open(connection="testament.db", user="testament", password="",
|
||||||
database="testament")
|
database="testament")
|
||||||
let lastCommit = db.getCommit(commit)
|
let lastCommit = db.getCommit(commit)
|
||||||
|
if lastCommit.isNil:
|
||||||
|
quit "cannot determine commit " & $commit
|
||||||
|
|
||||||
|
let previousCommit = db.getCommit(commit-1)
|
||||||
|
|
||||||
var outfile = open(filename, fmWrite)
|
var outfile = open(filename, fmWrite)
|
||||||
|
|
||||||
let data = db.getRow(sql(selRow), lastCommit, $backend.getMachine(db))
|
let machine = $backend.getMachine(db)
|
||||||
|
let data = db.getRow(sql(selRow), lastCommit, machine)
|
||||||
|
|
||||||
outfile.writeln("""{"total": $#, "passed": $#, "skipped": $#}""" % data)
|
outfile.writeln("""{"total": $#, "passed": $#, "skipped": $#""" % data)
|
||||||
|
|
||||||
|
if not previousCommit.isNil:
|
||||||
|
let diff = newJArray()
|
||||||
|
|
||||||
|
for row in db.rows(sql(selDiff), previousCommit, lastCommit, machine):
|
||||||
|
var obj = newJObject()
|
||||||
|
obj["name"] = %row[0]
|
||||||
|
obj["old"] = %row[1]
|
||||||
|
obj["new"] = %row[2]
|
||||||
|
diff.add obj
|
||||||
|
outfile.writeln(""", "diff": """)
|
||||||
|
outfile.writeln(diff.pretty)
|
||||||
|
|
||||||
|
outfile.writeln "}"
|
||||||
close(db)
|
close(db)
|
||||||
close(outfile)
|
close(outfile)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue