toaruos/util/run-tests.py
2012-11-28 23:41:05 -08:00

67 lines
1.5 KiB
Python

#!/usr/bin/env python
import subprocess, sys
q = subprocess.Popen(['qemu-system-i386', '-kernel', 'toaruos-kernel', '-m', '256',
'-serial', 'stdio', '-vga', 'std', '-hda', 'toaruos-disk.img',
'-vnc', ':1', '-append', 'vgaterm hdd start=/bin/core-tests logtoserial=10'],
stdout=subprocess.PIPE)
passes = 0
failures = 0
result = 0
def process_line(line):
global passes, failures
data = line.strip().split(" : ")
if data[1] == "FAIL":
color = "1;31"
text = "fail"
failures += 1
elif data[1] == "WARN":
color = "1;33"
text = "warn"
elif data[1] == "PASS":
color = "1;32"
text = "pass"
passes += 1
elif data[1] == "INFO":
color = "1;34"
text = "info"
elif data[1] == "DONE":
color = "1;36"
text = "Done!"
elif data[1] == "FATAL":
color = "1;37;41"
text = "FATAL ERROR ECOUNTERED"
print "\033[%sm%s\033[0m %s" % (color, text, data[2])
if data[1] == "FATAL":
return 2
elif data[1] == "DONE":
return 1
return 0
def log_line(line):
print >>sys.stderr, line.strip()
while q.poll() == None:
line = q.stdout.readline()
if line:
if line.startswith("core-tests :"):
result = process_line(line)
if result > 0:
q.kill()
try:
subprocess.call(["stty","echo"])
except:
pass
if result == 2:
sys.exit(2)
else:
log_line(line)
print "\033[1mTest completed. \033[1;32m%d passes\033[0m, \033[1;31m%d failures\033[0m." % (passes, failures)
if failures > 0:
sys.exit(1)