]> begriffs open source - cmsis/blob - CMSIS/CoreValidation/Tests/buildutils/testresult.py
CoreValidation: Modified build scripts for python 3.
[cmsis] / CMSIS / CoreValidation / Tests / buildutils / testresult.py
1 #! python
2
3 import shutil
4 from io import StringIO
5 from xml.etree import ElementTree
6
7 class 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   
27     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
38           
39   def saveXml(self, filename):
40     with open(filename, "w") as file:
41       self._xml.seek(0)
42       shutil.copyfileobj(self._xml, file)
43     
44   def isAvailable(self):
45     return self._avail
46     
47   def getSummary(self):
48     if self._avail:
49       return self._tests, self._executed, self._passed, self._failed
50     else:
51       raise self._except