blob: 98646a3dd0656fdf689e7745aa907ea6d2782abe [file] [log] [blame]
#! python
import shutil
from StringIO import StringIO
from xml.etree import ElementTree
class TestResult:
def _extractXml(self, log, xml):
dump = False
log.seek(0)
for line in log:
if dump:
xml.write(line)
if line.strip() == '</report>':
dump = False
else:
if line.strip() == '<?xml version="1.0"?>':
dump = True
xml.write(line)
def __init__(self, log):
self._xml = StringIO()
self._extractXml(log, self._xml)
self._xml.seek(0)
try:
report = ElementTree.parse(self._xml).getroot()
summary = report[0].findall('summary')[0]
self._tests = summary.find('tcnt').text
self._executed = summary.find('exec').text
self._passed = summary.find('pass').text
self._failed = summary.find('fail').text
self._avail = True
except ElementTree.ParseError as e:
self._avail = False
self._except = e
def saveXml(self, filename):
with open(filename, "w") as file:
self._xml.seek(0)
shutil.copyfileobj(self._xml, file)
def isAvailable(self):
return self._avail
def getSummary(self):
if self._avail:
return self._tests, self._executed, self._passed, self._failed
else:
raise self._except