2023-08-01 15:33:02 -04:00
|
|
|
# Copyright 2023 (c) Anna Schumaker.
|
|
|
|
"""Tests our TestCaseView for displaying xfstests results."""
|
|
|
|
import unittest
|
|
|
|
import tests.xunit
|
|
|
|
import xfstestsdb.gtk.view
|
|
|
|
from gi.repository import Gtk
|
|
|
|
|
|
|
|
|
2023-08-02 12:12:40 -04:00
|
|
|
class TestFilterButtons(unittest.TestCase):
|
|
|
|
"""Test case for our TestCaseView FilterButtons."""
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
"""Set up common variables."""
|
|
|
|
self.buttons = xfstestsdb.gtk.view.FilterButtons()
|
|
|
|
|
|
|
|
def test_init(self):
|
|
|
|
"""Check that the buttons were created correctly."""
|
|
|
|
self.assertIsInstance(self.buttons, Gtk.Box)
|
|
|
|
self.assertTrue(self.buttons.has_css_class("linked"))
|
|
|
|
|
|
|
|
def test_passed_button(self):
|
|
|
|
"""Test the 'passed' button."""
|
|
|
|
self.assertIsInstance(self.buttons._passed,
|
|
|
|
xfstestsdb.gtk.button.StatusToggle)
|
|
|
|
self.assertEqual(self.buttons.get_first_child(), self.buttons._passed)
|
|
|
|
|
|
|
|
self.assertEqual(self.buttons._passed.props.icon_name, "test-pass")
|
|
|
|
self.assertTrue(self.buttons._passed.has_css_class("passed"))
|
|
|
|
self.assertFalse(self.buttons._passed.props.active)
|
|
|
|
|
|
|
|
self.assertFalse(self.buttons.passed)
|
|
|
|
self.buttons._passed.props.active = True
|
|
|
|
self.assertTrue(self.buttons.passed)
|
|
|
|
|
|
|
|
def test_skipped_button(self):
|
|
|
|
"""Test the 'skipped' button."""
|
|
|
|
self.assertIsInstance(self.buttons._skipped,
|
|
|
|
xfstestsdb.gtk.button.StatusToggle)
|
|
|
|
self.assertEqual(self.buttons._passed.get_next_sibling(),
|
|
|
|
self.buttons._skipped)
|
|
|
|
|
|
|
|
self.assertEqual(self.buttons._skipped.props.icon_name, "test-skip")
|
|
|
|
self.assertTrue(self.buttons._skipped.has_css_class("skipped"))
|
|
|
|
self.assertFalse(self.buttons._skipped.props.active)
|
|
|
|
|
|
|
|
self.assertFalse(self.buttons.skipped)
|
|
|
|
self.buttons._skipped.props.active = True
|
|
|
|
self.assertTrue(self.buttons.skipped)
|
|
|
|
|
|
|
|
def test_failure_button(self):
|
|
|
|
"""Test the 'failure' button."""
|
|
|
|
self.assertIsInstance(self.buttons._failure,
|
|
|
|
xfstestsdb.gtk.button.StatusToggle)
|
|
|
|
self.assertEqual(self.buttons._skipped.get_next_sibling(),
|
|
|
|
self.buttons._failure)
|
|
|
|
|
|
|
|
self.assertEqual(self.buttons._failure.props.icon_name, "test-fail")
|
|
|
|
self.assertTrue(self.buttons._failure.has_css_class("failure"))
|
|
|
|
self.assertTrue(self.buttons._failure.props.active)
|
|
|
|
|
|
|
|
self.assertTrue(self.buttons.failure)
|
|
|
|
self.buttons._failure.props.active = False
|
|
|
|
self.assertFalse(self.buttons.failure)
|
|
|
|
|
|
|
|
|
2023-08-01 15:33:02 -04:00
|
|
|
class TestTestCaseView(unittest.TestCase):
|
|
|
|
"""Tests the TestCaseView."""
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
"""Set up common variables."""
|
|
|
|
self.xfstestsdb = xfstestsdb.Command()
|
|
|
|
with unittest.mock.patch("sys.stdout"):
|
|
|
|
self.xfstestsdb.run(["new", "/dev/vda1"])
|
|
|
|
self.xfstestsdb.run(["xunit", "read", "--name", "xunit-1",
|
|
|
|
"1", str(tests.xunit.XUNIT_1)])
|
|
|
|
self.xfstestsdb.run(["xunit", "read", "--name", "xunit-2",
|
|
|
|
"1", str(tests.xunit.XUNIT_1)])
|
|
|
|
|
|
|
|
self.model = xfstestsdb.gtk.model.TestCaseList(self.xfstestsdb.sql, 1)
|
|
|
|
self.view = xfstestsdb.gtk.view.TestCaseView()
|
|
|
|
|
|
|
|
def test_init(self):
|
|
|
|
"""Test that we create the TestCaseView correctly."""
|
|
|
|
self.assertIsInstance(self.view, Gtk.ScrolledWindow)
|
|
|
|
self.assertTrue(self.view.has_css_class("card"))
|
|
|
|
self.assertIsNone(self.view.model)
|
|
|
|
|
|
|
|
def test_columnview(self):
|
|
|
|
"""Test that we set up the Columnview correctly."""
|
|
|
|
self.assertIsInstance(self.view.props.child, Gtk.ColumnView)
|
|
|
|
self.assertIsInstance(self.view.props.child.get_model(),
|
|
|
|
Gtk.NoSelection)
|
|
|
|
self.assertEqual(len(self.view.props.child.get_columns()), 0)
|
|
|
|
self.assertTrue(self.view.props.child.get_show_column_separators())
|
|
|
|
self.assertTrue(self.view.props.child.get_show_row_separators())
|
|
|
|
self.assertTrue(self.view.props.child.get_hexpand())
|
|
|
|
self.assertTrue(self.view.props.child.get_vexpand())
|
|
|
|
|
2023-08-02 12:12:40 -04:00
|
|
|
def test_filter(self):
|
|
|
|
"""Test that we set up the Gtk.FilterModel and Buttons correctly."""
|
|
|
|
self.assertIsInstance(self.view._filtermodel, Gtk.FilterListModel)
|
|
|
|
self.assertIsInstance(self.view._testfilter,
|
|
|
|
xfstestsdb.gtk.model.TestCaseFilter)
|
|
|
|
self.assertIsInstance(self.view.filterbuttons,
|
|
|
|
xfstestsdb.gtk.view.FilterButtons)
|
|
|
|
|
|
|
|
self.assertEqual(self.view.props.child.get_model().get_model(),
|
|
|
|
self.view._filtermodel)
|
|
|
|
self.assertEqual(self.view._filtermodel.props.filter,
|
|
|
|
self.view._testfilter)
|
|
|
|
|
|
|
|
self.assertFalse(self.view._testfilter.passed)
|
|
|
|
self.view.filterbuttons.passed = True
|
|
|
|
self.assertTrue(self.view._testfilter.passed)
|
|
|
|
|
|
|
|
self.assertFalse(self.view._testfilter.skipped)
|
|
|
|
self.view.filterbuttons.skipped = True
|
|
|
|
self.assertTrue(self.view._testfilter.skipped)
|
|
|
|
|
|
|
|
self.assertTrue(self.view._testfilter.failure)
|
|
|
|
self.view.filterbuttons.failure = False
|
|
|
|
self.assertFalse(self.view._testfilter.failure)
|
|
|
|
|
2023-08-01 15:33:02 -04:00
|
|
|
def test_testcase_column(self):
|
|
|
|
"""Test that we set up the 'testcase' column correctly."""
|
|
|
|
self.assertIsInstance(self.view._testcase, Gtk.ColumnViewColumn)
|
|
|
|
self.assertIsInstance(self.view._testcase.props.factory,
|
|
|
|
xfstestsdb.gtk.row.LabelFactory)
|
|
|
|
self.assertEqual(self.view._testcase.props.factory.property, "name")
|
|
|
|
self.assertEqual(self.view._testcase.props.title, "testcase")
|
|
|
|
self.assertFalse(self.view._testcase.props.expand)
|
|
|
|
|
|
|
|
def test_model(self):
|
|
|
|
"""Test setting the model property."""
|
|
|
|
self.view.model = self.model
|
2023-08-02 12:12:40 -04:00
|
|
|
self.assertEqual(self.view._filtermodel.props.model, self.model)
|
2023-08-01 15:33:02 -04:00
|
|
|
|
|
|
|
columns = self.view.props.child.get_columns()
|
2023-08-01 16:43:15 -04:00
|
|
|
self.assertEqual(len(columns), 3)
|
2023-08-01 15:33:02 -04:00
|
|
|
self.assertEqual(columns[0], self.view._testcase)
|
|
|
|
|
2023-08-01 16:43:15 -04:00
|
|
|
for i, title in enumerate(["xunit-1", "xunit-2"], start=1):
|
|
|
|
with self.subTest(i=i, title=title):
|
|
|
|
self.assertIsInstance(columns[i].props.factory,
|
|
|
|
xfstestsdb.gtk.row.ResultFactory)
|
|
|
|
self.assertEqual(columns[i].props.factory.xunit, title)
|
|
|
|
self.assertEqual(columns[i].props.title, title)
|
|
|
|
self.assertTrue(columns[i].props.expand)
|
|
|
|
|
2023-08-01 15:33:02 -04:00
|
|
|
self.view.model = None
|
|
|
|
self.assertEqual(len(self.view.props.child.get_columns()), 0)
|
|
|
|
|
|
|
|
self.view.model = self.model
|
|
|
|
self.assertEqual(self.view.props.child.get_columns()[0],
|
|
|
|
self.view._testcase)
|
|
|
|
|
|
|
|
|
|
|
|
class TestXfstestsView(unittest.TestCase):
|
|
|
|
"""Test the XfstestsView."""
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
"""Set up common variables."""
|
|
|
|
self.xfstestsdb = xfstestsdb.Command()
|
|
|
|
with unittest.mock.patch("sys.stdout"):
|
|
|
|
self.xfstestsdb.run(["new", "/dev/vda1"])
|
|
|
|
self.xfstestsdb.run(["xunit", "read", "--name", "xunit-1",
|
|
|
|
"1", str(tests.xunit.XUNIT_1)])
|
|
|
|
self.xfstestsdb.run(["xunit", "read", "--name", "xunit-2",
|
|
|
|
"1", str(tests.xunit.XUNIT_1)])
|
|
|
|
|
|
|
|
self.model = xfstestsdb.gtk.model.TestCaseList(self.xfstestsdb.sql, 1)
|
|
|
|
self.view = xfstestsdb.gtk.view.XfstestsView()
|
|
|
|
|
|
|
|
def test_init(self):
|
|
|
|
"""Check that the XfstestsView was set up correctly."""
|
|
|
|
self.assertIsInstance(self.view, Gtk.Box)
|
|
|
|
self.assertEqual(self.view.props.orientation, Gtk.Orientation.VERTICAL)
|
|
|
|
|
|
|
|
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(self.view.get_first_child(), self.view._testcaseview)
|
|
|
|
|
|
|
|
def test_model(self):
|
|
|
|
"""Test the XfstestsView 'model' property."""
|
|
|
|
self.assertIsNone(self.view.model)
|
|
|
|
self.view.model = self.model
|
|
|
|
self.assertEqual(self.view._testcaseview.model, self.model)
|
2023-08-02 12:12:40 -04:00
|
|
|
|
|
|
|
def test_filterbuttons(self):
|
|
|
|
"""Test the XfstestsView 'filterbuttons' property."""
|
|
|
|
self.assertEqual(self.view.filterbuttons,
|
|
|
|
self.view._testcaseview.filterbuttons)
|