gtk: Add a MessagesView to the XfstestsView

This is placed in a Gtk.Stack with a nice transition to show the failed
tests log.

Signed-off-by: Anna Schumaker <anna@nowheycreamery.com>
This commit is contained in:
Anna Schumaker 2023-08-31 13:14:45 -04:00
parent ea2913429c
commit 952889687f
2 changed files with 58 additions and 5 deletions

View File

@ -494,17 +494,32 @@ class TestXfstestsView(unittest.TestCase):
xfstestsdb.gtk.view.PropertyView)
self.assertEqual(sep.get_next_sibling(), self.view._propertyview)
def test_testcase_view(self):
"""Check that the XfstestsView sets up a TestCaseView correctly."""
def test_stack(self):
"""Check that the XfstestsView sets u a Gtk.Stack correctly."""
sep = self.view._propertyview.get_next_sibling()
self.assertIsInstance(sep, Gtk.Separator)
self.assertIsInstance(self.view._stack, Gtk.Stack)
self.assertEqual(self.view._stack.props.transition_type,
Gtk.StackTransitionType.OVER_LEFT_RIGHT)
self.assertEqual(sep.get_next_sibling(), self.view._stack)
def test_testcase_view(self):
"""Check that the XfstestsView sets up a TestCaseView correctly."""
self.assertIsInstance(self.view._testcaseview,
xfstestsdb.gtk.view.TestCaseView)
self.assertEqual(sep.get_next_sibling(), self.view._testcaseview)
self.assertEqual(self.view._stack.get_child_by_name("testcases"),
self.view._testcaseview)
def test_messages_view(self):
"""Check that the XfstestsView sets up a MessagesView correctly."""
self.assertIsInstance(self.view._messagesview,
xfstestsdb.gtk.view.MessagesView)
self.assertEqual(self.view._stack.get_child_by_name("messages"),
self.view._messagesview)
def test_summary_view(self):
"""Check that the XfstestsView sets up a SummaryView correctly."""
sep = self.view._testcaseview.get_next_sibling()
sep = self.view._stack.get_next_sibling()
self.assertIsInstance(sep, Gtk.Separator)
self.assertIsInstance(self.view._summaryview,
xfstestsdb.gtk.view.SummaryView)
@ -538,3 +553,21 @@ class TestXfstestsView(unittest.TestCase):
"""Test the XfstestsView 'filterbuttons' property."""
self.assertEqual(self.view.filterbuttons,
self.view._testcaseview.filterbuttons)
def test_messages(self):
"""Test displaying messages to the user."""
self.assertEqual(self.view._stack.get_visible_child_name(),
"testcases")
self.view._testcaseview.emit("show-messages", "testcase",
"xunit", "stdout", "stderr")
self.assertEqual(self.view._stack.get_visible_child_name(),
"messages")
self.assertEqual(self.view._messagesview.testcase, "testcase")
self.assertEqual(self.view._messagesview.xunit, "xunit")
self.assertEqual(self.view._messagesview.stdout, "stdout")
self.assertEqual(self.view._messagesview.stderr, "stderr")
self.view._messagesview.emit("go-back")
self.assertEqual(self.view._stack.get_visible_child_name(),
"testcases")

View File

@ -299,10 +299,13 @@ class XfstestsView(Gtk.Box):
def __init__(self):
"""Initialize an XfstestsView."""
animation = Gtk.StackTransitionType.OVER_LEFT_RIGHT
super().__init__(orientation=Gtk.Orientation.VERTICAL)
self._environview = EnvironmentView()
self._propertyview = PropertyView()
self._testcaseview = TestCaseView()
self._messagesview = MessagesView()
self._stack = Gtk.Stack(transition_type=animation)
self._summaryview = SummaryView()
self.bind_property("environment", self._environview, "model")
@ -310,14 +313,31 @@ class XfstestsView(Gtk.Box):
self.bind_property("model", self._testcaseview, "model")
self.bind_property("summary", self._summaryview, "model")
self._testcaseview.connect("show-messages", self.__show_messages)
self._messagesview.connect("go-back", self.__show_testcases)
self._stack.add_named(self._testcaseview, "testcases")
self._stack.add_named(self._messagesview, "messages")
self.append(self._environview)
self.append(Gtk.Separator())
self.append(self._propertyview)
self.append(Gtk.Separator())
self.append(self._testcaseview)
self.append(self._stack)
self.append(Gtk.Separator())
self.append(self._summaryview)
def __show_messages(self, view: TestCaseView, testcase: str,
xunit: str, stdout: str, stderr: str) -> None:
self._messagesview.testcase = testcase
self._messagesview.xunit = xunit
self._messagesview.stdout = stdout
self._messagesview.stderr = stderr
self._stack.set_visible_child_name("messages")
def __show_testcases(self, view: MessagesView) -> None:
self._stack.set_visible_child_name("testcases")
@GObject.Property(type=FilterButtons)
def filterbuttons(self) -> FilterButtons:
"""Get the FilterButtons attached to the child TestCaseView."""