report-xfstests.py: Show why tests were skipped
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
4d36a33840
commit
31166081bf
|
@ -14,6 +14,15 @@ class Property(GObject.GObject):
|
|||
self.value = value
|
||||
|
||||
|
||||
class NotRun(GObject.GObject):
|
||||
def __init__(self, message):
|
||||
GObject.GObject.__init__(self)
|
||||
self.message = message
|
||||
|
||||
def __lt__(self, rhs):
|
||||
return self.message < rhs.message
|
||||
|
||||
|
||||
class Results(Property):
|
||||
def __init__(self, properties):
|
||||
total = properties["TESTS"]
|
||||
|
@ -37,6 +46,17 @@ class Model(GObject.GObject, Gio.ListModel):
|
|||
def do_get_item(self, i): return self.properties[i]
|
||||
|
||||
|
||||
class NotRunModel(GObject.GObject, Gio.ListModel):
|
||||
def __init__(self, notrun):
|
||||
GObject.GObject.__init__(self)
|
||||
self.notrun = [ NotRun(m) for m in notrun ]
|
||||
self.notrun.sort()
|
||||
|
||||
def do_get_item_type(self): return GObject.TYPE_PYOBJECT
|
||||
def do_get_n_items(self): return len(self.notrun)
|
||||
def do_get_item(self, i): return self.notrun[i]
|
||||
|
||||
|
||||
class Factory(Gtk.SignalListItemFactory):
|
||||
def __init__(self, column):
|
||||
Gtk.SignalListItemFactory.__init__(self)
|
||||
|
@ -63,6 +83,27 @@ class Factory(Gtk.SignalListItemFactory):
|
|||
listitem.set_child(None)
|
||||
|
||||
|
||||
class NotRunFactory(Gtk.SignalListItemFactory):
|
||||
def __init__(self):
|
||||
Gtk.SignalListItemFactory.__init__(self)
|
||||
self.connect("setup", self.on_setup)
|
||||
self.connect("bind", self.on_bind)
|
||||
self.connect("unbind", self.on_unbind)
|
||||
self.connect("teardown", self.on_teardown)
|
||||
|
||||
def on_setup(self, factory, listitem):
|
||||
listitem.set_child(Gtk.Label(xalign=0))
|
||||
|
||||
def on_bind(self, factory, listitem):
|
||||
listitem.get_child().set_text(listitem.get_item().message)
|
||||
|
||||
def on_unbind(self, factory, listitem):
|
||||
listitem.get_child().set_text("")
|
||||
|
||||
def on_teardown(self, factory, listitem):
|
||||
listitem.set_child(None)
|
||||
|
||||
|
||||
class View(Gtk.ColumnView):
|
||||
def __init__(self, properties):
|
||||
self.selection = Gtk.NoSelection.new(Model(properties))
|
||||
|
@ -72,6 +113,13 @@ class View(Gtk.ColumnView):
|
|||
self.append_column(Gtk.ColumnViewColumn.new(title, Factory(title)))
|
||||
|
||||
|
||||
class NotRunView(Gtk.ListView):
|
||||
def __init__(self, notrun):
|
||||
self.selection = Gtk.NoSelection.new(NotRunModel(notrun))
|
||||
Gtk.ListView.__init__(self, model=self.selection, factory=NotRunFactory())
|
||||
self.add_css_class("data-table")
|
||||
|
||||
|
||||
class Stack(Gtk.Stack):
|
||||
def __init__(self):
|
||||
Gtk.Stack.__init__(self, transition_type=Gtk.StackTransitionType.OVER_LEFT_RIGHT)
|
||||
|
@ -85,6 +133,9 @@ class Stack(Gtk.Stack):
|
|||
|
||||
def show_properties(self, results):
|
||||
for version in results.versions:
|
||||
window = Gtk.ScrolledWindow(vscrollbar_policy=Gtk.PolicyType.NEVER,
|
||||
child=View(results.properties[version]))
|
||||
self.add_titled(window, version, version)
|
||||
self.add_page(View(results.properties[version]), version, Gtk.PolicyType.NEVER)
|
||||
self.add_page(NotRunView(results.skipped), "[not run]", Gtk.PolicyType.AUTOMATIC)
|
||||
|
||||
def add_page(self, child, name, policy):
|
||||
window = Gtk.ScrolledWindow(vscrollbar_policy=policy, child=child)
|
||||
self.add_titled(window, name, name)
|
||||
|
|
|
@ -48,6 +48,7 @@ class TestResults:
|
|||
self.versions = [ ]
|
||||
self.tests = dict()
|
||||
self.properties = dict()
|
||||
self.skipped = set()
|
||||
|
||||
for file in sorted(testdir.iterdir()):
|
||||
self.versions.append(file.stem)
|
||||
|
@ -66,6 +67,7 @@ class TestResults:
|
|||
result = PassingTest(elm)
|
||||
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)
|
||||
|
|
|
@ -120,11 +120,16 @@ class Filter(Gtk.Filter):
|
|||
def do_match(self, testcase):
|
||||
search = [ f"name={testcase.name}" ]
|
||||
for key in sorted(testcase.versions.keys()):
|
||||
keys = [ key ] + key.split("-")
|
||||
keys = [ "status", key ] + key.split("-")
|
||||
match type(testcase[key]):
|
||||
case testresults.PassingTest: res = [ "passing", "passed" ]
|
||||
case testresults.SkippedTest: res = [ "skipped" ]
|
||||
case testresults.FailedTest: res = [ "failed", "failing" ]
|
||||
case testresults.PassingTest:
|
||||
res = [ "passing", "passed" ]
|
||||
case testresults.SkippedTest:
|
||||
res = [ "skipped" ]
|
||||
search.append(f"message={testcase[key].message}")
|
||||
case testresults.FailedTest:
|
||||
res = [ "failed", "failing" ]
|
||||
search.append(f"message={testcase[key].message}")
|
||||
case _: res = [ "missing" ]
|
||||
for k in keys:
|
||||
for r in res:
|
||||
|
|
Loading…
Reference in New Issue