blob: 98646a3dd0656fdf689e7745aa907ea6d2782abe [file] [log] [blame]
Jonatan Antoni8105ff92017-09-12 13:54:40 +02001#! python
2
3import shutil
4from StringIO import StringIO
5from xml.etree import ElementTree
6
7class TestResult:
8
9 def _extractXml(self, log, xml):
10 dump = False
11 log.seek(0)
12 for line in log:
13 if dump:
14 xml.write(line)
15 if line.strip() == '</report>':
16 dump = False
17 else:
18 if line.strip() == '<?xml version="1.0"?>':
19 dump = True
20 xml.write(line)
21
22 def __init__(self, log):
23 self._xml = StringIO()
24 self._extractXml(log, self._xml)
25 self._xml.seek(0)
26
Jonatan Antonicdd14922017-09-12 15:14:07 +020027 try:
28 report = ElementTree.parse(self._xml).getroot()
29 summary = report[0].findall('summary')[0]
30 self._tests = summary.find('tcnt').text
31 self._executed = summary.find('exec').text
32 self._passed = summary.find('pass').text
33 self._failed = summary.find('fail').text
34 self._avail = True
35 except ElementTree.ParseError as e:
36 self._avail = False
37 self._except = e
Jonatan Antoni8105ff92017-09-12 13:54:40 +020038
39 def saveXml(self, filename):
40 with open(filename, "w") as file:
41 self._xml.seek(0)
42 shutil.copyfileobj(self._xml, file)
43
Jonatan Antonicdd14922017-09-12 15:14:07 +020044 def isAvailable(self):
45 return self._avail
46
Jonatan Antoni8105ff92017-09-12 13:54:40 +020047 def getSummary(self):
Jonatan Antonicdd14922017-09-12 15:14:07 +020048 if self._avail:
49 return self._tests, self._executed, self._passed, self._failed
50 else:
51 raise self._except