reporter: updates for xfstests xunit generation changes

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
Anna Schumaker 2023-04-17 13:12:51 -04:00
parent d080c04a5d
commit d29b73180f
3 changed files with 28 additions and 17 deletions

View File

@ -38,7 +38,7 @@ class Results(Property):
class Model(GObject.GObject, Gio.ListModel):
def __init__(self, properties):
GObject.GObject.__init__(self)
self.properties = [ Property(p, properties[p]) for p in PROPERTIES ]
self.properties = [ Property(p, properties.get(p)) for p in PROPERTIES ]
self.properties.append(Results(properties))
def do_get_item_type(self): return GObject.TYPE_PYOBJECT
@ -73,7 +73,9 @@ class Factory(Gtk.SignalListItemFactory):
label = listitem.get_child()
match self.column:
case "Property": label.set_text(listitem.get_item().key)
case "Value": label.set_text(listitem.get_item().value)
case "Value":
value = listitem.get_item().value
label.set_text(value if value else "")
case _: label.set_text("=")
def on_unbind(self, factory, listitem):

View File

@ -3,6 +3,7 @@ from gi.repository import GObject
from gi.repository import Gtk
import html
import pathlib
import re
import tarfile
import xml.etree.ElementTree
@ -23,20 +24,24 @@ class SkippedTest:
self.message = elm[0].attrib["message"]
self.message = self.message.replace(test_dev, "$TEST_DEV")
self.message = self.message.replace(test_dir, "$TEST_DIR")
self.message = self.message.replace(scratch_dev, "$SCRATCH_DEV")
self.message = self.message.replace(scratch_mnt, "$SCRATCH_MNT")
if scratch_dev:
self.message = self.message.replace(scratch_dev, "$SCRATCH_DEV")
if scratch_mnt:
self.message = self.message.replace(scratch_mnt, "$SCRATCH_MNT")
class FailedTest:
def __init__(self, elm):
def __init__(self, ns, elm):
self.time = elm.attrib["time"]
self.system_out = Gtk.TextBuffer()
self.system_err = Gtk.TextBuffer()
for e in elm:
match e.tag:
case "failure": self.message = e.attrib["message"]
case "system-out": self.system_out.set_text(html.unescape(e.text))
case "system-err": self.system_err.set_text(html.unescape(e.text))
if e.tag == f"{ns}failure":
self.message = e.attrib["message"]
elif e.tag == f"{ns}system-out":
self.system_out.set_text(html.unescape(e.text))
elif e.tag == f"{ns}system-err":
self.system_err.set_text(html.unescape(e.text))
class TestCase(GObject.GObject):
@ -66,26 +71,29 @@ class TestResults:
self.versions.append(pathlib.Path(name).stem)
passed = 0
match = re.match(r"{.*?}", root.tag)
ns = match.group(0) if match else ""
for prop in root.attrib.keys():
self.set_property(prop, root.attrib[prop])
for elm in root:
if elm.tag == "properties":
if elm.tag == f"{ns}properties":
for prop in elm:
self.set_property(prop.attrib["name"], prop.attrib["value"])
elif elm.tag == "testcase":
elif elm.tag == f"{ns}testcase":
if len(elm) == 0:
result = PassingTest(elm)
passed += 1
elif elm[0].tag == "skipped":
elif elm[0].tag == f"{ns}skipped":
result = SkippedTest(elm,
self.properties[self.versions[-1]]["TEST_DEV"],
self.properties[self.versions[-1]]["TEST_DIR"],
self.properties[self.versions[-1]]["SCRATCH_DEV"],
self.properties[self.versions[-1]]["SCRATCH_MNT"])
self.properties[self.versions[-1]].get("SCRATCH_DEV"),
self.properties[self.versions[-1]].get("SCRATCH_MNT"))
self.skipped.add(result.message)
elif elm[0].tag == "failure":
result = FailedTest(elm)
elif elm[0].tag == f"{ns}failure":
result = FailedTest(ns, elm)
self.add_testcase(elm.attrib["name"], result)
self.set_property("passed", str(passed))

View File

@ -124,6 +124,7 @@ class Filter(Gtk.Filter):
match type(testcase[key]):
case testresults.PassingTest:
res = [ "passing", "passed" ]
search.append(f"time={testcase[key].time}")
case testresults.SkippedTest:
res = [ "skipped" ]
search.append(f"message={testcase[key].message}")
@ -171,7 +172,7 @@ class Viewer(Gtk.ScrolledWindow):
self.columnview = Gtk.ColumnView.new(model=self.selection)
self.columnview.add_css_class("data-table")
self.provider.load_from_data(CSS.encode())
self.provider.load_from_data(CSS, -1)
self.get_style_context().add_provider_for_display(self.get_display(), self.provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
self.set_child(self.columnview)