57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
|
#!/usr/bin/python
|
||
|
import sys
|
||
|
import codecs
|
||
|
|
||
|
HTML_START = """<!DOCTYPE html>
|
||
|
<html lang="en-us">
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<title>Dosage comic status</title>
|
||
|
</head>
|
||
|
<body>
|
||
|
"""
|
||
|
|
||
|
HTML_END = """
|
||
|
</body></html>
|
||
|
"""
|
||
|
|
||
|
|
||
|
def main(args=None):
|
||
|
if args is None:
|
||
|
args = sys.argv[1:]
|
||
|
filename = 'testresults.txt'
|
||
|
with open(filename) as fp:
|
||
|
tests = parse_test_data(fp)
|
||
|
output = 'table.html'
|
||
|
with codecs.open(output, 'w', 'utf-8') as fp:
|
||
|
render_test_data(tests, fp)
|
||
|
|
||
|
|
||
|
def get_comic_name(line):
|
||
|
return line.split('::')[1][4:]
|
||
|
|
||
|
|
||
|
def parse_test_data(fp):
|
||
|
data = []
|
||
|
for line in fp:
|
||
|
if line.rstrip().endswith('::test_comic'):
|
||
|
name = get_comic_name(line)
|
||
|
failed = line.startswith('F')
|
||
|
data.append((name, failed))
|
||
|
data.sort()
|
||
|
return data
|
||
|
|
||
|
|
||
|
def render_test_data(tests, fp):
|
||
|
fp.write(HTML_START)
|
||
|
fp.write('<table><th><td>Name</td><td>Status</td></th>\n')
|
||
|
for name, failed in tests:
|
||
|
status = failed and "broken" or "ok"
|
||
|
fp.write('<tr><td>%s</td><td>%s</td></tr>\n' % (name, status))
|
||
|
fp.write('</table>\n')
|
||
|
fp.write(HTML_END)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|