report-xfstests.py: Read compressed results
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
9bb097aae4
commit
ee6e9c3cf8
|
@ -46,7 +46,7 @@ class TestViewer(Gtk.Box):
|
|||
def set_test_result(self, file):
|
||||
current = self.stack.clear()
|
||||
self.viewer.clear()
|
||||
if file and file.get_is_test_result():
|
||||
if file and file.is_file():
|
||||
results = testresults.TestResults(file.path)
|
||||
self.stack.show_properties(results, current)
|
||||
self.viewer.show_results(results)
|
||||
|
|
|
@ -10,13 +10,14 @@ class Path(GObject.GObject):
|
|||
def __init__(self, path):
|
||||
GObject.GObject.__init__(self)
|
||||
self.path = path
|
||||
self.is_file = self.path.is_file
|
||||
|
||||
def __lt__(self, rhs): return self.path < rhs.path
|
||||
def get_is_test_result(self):
|
||||
return False not in [ f.is_file() for f in self.path.iterdir() ]
|
||||
def get_name(self): return self.path.name
|
||||
def get_name(self):
|
||||
name = self.path.name
|
||||
return name.split(".")[0] if self.is_file() else name
|
||||
def get_model(self):
|
||||
if not self.get_is_test_result():
|
||||
if self.path.is_dir():
|
||||
return DirectoryModel(self.path)
|
||||
|
||||
|
||||
|
@ -73,7 +74,7 @@ class DirectoryWindow(Gtk.ScrolledWindow):
|
|||
expander = listitem.get_child()
|
||||
expander.set_list_row(treerow)
|
||||
expander.get_child().set_text(filepath.get_name())
|
||||
listitem.set_selectable(filepath.get_is_test_result())
|
||||
listitem.set_selectable(filepath.is_file())
|
||||
|
||||
def on_unbind(self, factory, listitem):
|
||||
expander = listitem.get_child()
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
from gi.repository import GObject
|
||||
from gi.repository import Gtk
|
||||
import html
|
||||
import pathlib
|
||||
import tarfile
|
||||
import xml.etree.ElementTree
|
||||
|
||||
class PassingTest:
|
||||
|
@ -44,39 +46,43 @@ class TestCase(GObject.GObject):
|
|||
|
||||
|
||||
class TestResults:
|
||||
def __init__(self, testdir):
|
||||
def __init__(self, testtar):
|
||||
self.versions = [ ]
|
||||
self.tests = dict()
|
||||
self.properties = dict()
|
||||
self.skipped = set()
|
||||
|
||||
for file in sorted(testdir.iterdir()):
|
||||
self.versions.append(file.stem)
|
||||
passed = 0
|
||||
with tarfile.open(testtar, "r:*") as tf:
|
||||
for member in [ m for m in tf.getmembers() if m.isfile() ]:
|
||||
self.read_file(member.name, tf.extractfile(member))
|
||||
self.versions.sort()
|
||||
|
||||
root = xml.etree.ElementTree.parse(file).getroot()
|
||||
for prop in root.attrib.keys():
|
||||
self.set_property(prop, file.stem, root.attrib[prop])
|
||||
def read_file(self, name, file):
|
||||
root = xml.etree.ElementTree.parse(file).getroot()
|
||||
self.versions.append(pathlib.Path(name).stem)
|
||||
passed = 0
|
||||
|
||||
for elm in root:
|
||||
if elm.tag == "properties":
|
||||
for prop in elm:
|
||||
self.set_property(prop.attrib["name"], file.stem,
|
||||
prop.attrib["value"])
|
||||
elif elm.tag == "testcase":
|
||||
if len(elm) == 0:
|
||||
result = PassingTest(elm)
|
||||
passed += 1
|
||||
elif elm[0].tag == "skipped":
|
||||
result = SkippedTest(elm)
|
||||
self.skipped.add(result.message)
|
||||
elif elm[0].tag == "failure":
|
||||
result = FailedTest(elm)
|
||||
self.add_testcase(elm.attrib["name"], file.stem, result)
|
||||
self.set_property("passed", file.stem, str(passed))
|
||||
for prop in root.attrib.keys():
|
||||
self.set_property(prop, root.attrib[prop])
|
||||
|
||||
def set_property(self, name, vers, value):
|
||||
self.properties.setdefault(vers, dict())[name.upper()] = value
|
||||
for elm in root:
|
||||
if elm.tag == "properties":
|
||||
for prop in elm:
|
||||
self.set_property(prop.attrib["name"], prop.attrib["value"])
|
||||
elif elm.tag == "testcase":
|
||||
if len(elm) == 0:
|
||||
result = PassingTest(elm)
|
||||
passed += 1
|
||||
elif elm[0].tag == "skipped":
|
||||
result = SkippedTest(elm)
|
||||
self.skipped.add(result.message)
|
||||
elif elm[0].tag == "failure":
|
||||
result = FailedTest(elm)
|
||||
self.add_testcase(elm.attrib["name"], result)
|
||||
self.set_property("passed", str(passed))
|
||||
|
||||
def add_testcase(self, name, vers, result):
|
||||
self.tests.setdefault(name, TestCase(name))[vers] = result
|
||||
def set_property(self, name, value):
|
||||
self.properties.setdefault(self.versions[-1], dict())[name.upper()] = value
|
||||
|
||||
def add_testcase(self, name, result):
|
||||
self.tests.setdefault(name, TestCase(name))[self.versions[-1]] = result
|
||||
|
|
Loading…
Reference in New Issue