From ad083571210ddbfc382a7d4fc0a5ea0520b7ef8c Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Tue, 15 Aug 2023 11:26:43 -0400 Subject: [PATCH] gtk: Create a XunitCell object and rename the XunitResult object I use the XunitCell as a base class for the (renamed) TestResult and SettingsValue objects. This lets us combine common values and functionality in one reusable place. Signed-off-by: Anna Schumaker --- tests/gtk/test_model.py | 32 ++++++++++++++++++++++---------- xfstestsdb/gtk/model.py | 27 ++++++++++++++++++++------- 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/tests/gtk/test_model.py b/tests/gtk/test_model.py index 527f21b..7d57ea7 100644 --- a/tests/gtk/test_model.py +++ b/tests/gtk/test_model.py @@ -9,23 +9,35 @@ from gi.repository import Gio from gi.repository import Gtk -class TestXunitResult(unittest.TestCase): +class TestXunitCell(unittest.TestCase): + """Test case for our base XunitCell object.""" + + def test_cell(self): + """Test creating a Cell instance.""" + cell = xfstestsdb.gtk.model.XunitCell(name="my xunit name") + self.assertIsInstance(cell, GObject.GObject) + self.assertEqual(cell.name, "my xunit name") + self.assertEqual(str(cell), "my xunit name") + + +class TestTestResult(unittest.TestCase): """Tests a single TestCase Xunit instance.""" def test_xunit_result(self): """Test creating an xunit instance.""" - xunit = xfstestsdb.gtk.model.XunitResult(name="my xunit name", - status="passed", time=123, - message="my message", - stdout="my stdout", - stderr="my stderr") - self.assertIsInstance(xunit, GObject.GObject) + xunit = xfstestsdb.gtk.model.TestResult(name="my xunit name", + status="passed", time=123, + message="my message", + stdout="my stdout", + stderr="my stderr") + self.assertIsInstance(xunit, xfstestsdb.gtk.model.XunitCell) self.assertEqual(xunit.name, "my xunit name") self.assertEqual(xunit.status, "passed") self.assertEqual(xunit.time, 123) self.assertEqual(xunit.message, "my message") self.assertEqual(xunit.stdout, "my stdout") self.assertEqual(xunit.stderr, "my stderr") + self.assertEqual(str(xunit), "passed") class TestTestCase(unittest.TestCase): @@ -54,7 +66,7 @@ class TestTestCase(unittest.TestCase): self.testcase.add_xunit("xunit-1", "passed", 123, "message", "stdout", "stderr") xunit = self.testcase["xunit-1"] - self.assertIsInstance(xunit, xfstestsdb.gtk.model.XunitResult) + self.assertIsInstance(xunit, xfstestsdb.gtk.model.TestResult) self.assertEqual(xunit.name, "xunit-1") self.assertEqual(xunit.status, "passed") self.assertEqual(xunit.time, 123) @@ -64,7 +76,7 @@ class TestTestCase(unittest.TestCase): self.testcase.add_xunit("xunit-2", "failed", 456, None, None, None) xunit = self.testcase["xunit-2"] - self.assertIsInstance(xunit, xfstestsdb.gtk.model.XunitResult) + self.assertIsInstance(xunit, xfstestsdb.gtk.model.TestResult) self.assertEqual(xunit.name, "xunit-2") self.assertEqual(xunit.status, "failed") self.assertEqual(xunit.time, 456) @@ -214,7 +226,7 @@ class TestSummaryValue(unittest.TestCase): value = xfstestsdb.gtk.model.SummaryValue(name="my xunit name", value=12345, unit="testcase") - self.assertIsInstance(value, GObject.GObject) + self.assertIsInstance(value, xfstestsdb.gtk.model.XunitCell) self.assertEqual(value.name, "my xunit name") self.assertEqual(value.unit, "testcase") self.assertEqual(value.value, 12345) diff --git a/xfstestsdb/gtk/model.py b/xfstestsdb/gtk/model.py index 1e42fa8..baaed54 100644 --- a/xfstestsdb/gtk/model.py +++ b/xfstestsdb/gtk/model.py @@ -7,16 +7,29 @@ from gi.repository import Gtk from .. import sqlite -class XunitResult(GObject.GObject): - """The results for a single TestCase with a specific Xunit.""" +class XunitCell(GObject.GObject): + """Holds a single value for a single Xunit.""" name = GObject.Property(type=str) + + def __str__(self) -> str: + """Get a string representation of this XunitCell.""" + return self.name + + +class TestResult(XunitCell): + """The results for a single TestCase with a specific Xunit.""" + status = GObject.Property(type=str) time = GObject.Property(type=int) message = GObject.Property(type=str) stdout = GObject.Property(type=str) stderr = GObject.Property(type=str) + def __str__(self) -> str: + """Get a string representation of this TestResult.""" + return self.status + class TestCase(GObject.GObject): """Collects results for a single TestCase with multiple Xunits.""" @@ -28,7 +41,7 @@ class TestCase(GObject.GObject): super().__init__(name=name) self.__xunits = {} - def __getitem__(self, xunit: str) -> XunitResult | None: + def __getitem__(self, xunit: str) -> TestResult | None: """Get the results for a specific Xunit.""" return self.__xunits.get(xunit) @@ -43,9 +56,9 @@ class TestCase(GObject.GObject): message = "" if message is None else message stdout = "" if stdout is None else stdout stderr = "" if stderr is None else stderr - self.__xunits[name] = XunitResult(name=name, status=status, time=time, - message=message, stdout=stdout, - stderr=stderr) + self.__xunits[name] = TestResult(name=name, status=status, time=time, + message=message, stdout=stdout, + stderr=stderr) def get_results(self) -> set[str]: """Get a set of results for each added xunit.""" @@ -134,7 +147,7 @@ class TestCaseFilter(Gtk.Filter): return False -class SummaryValue(GObject.GObject): +class SummaryValue(XunitCell): """The summary of a single Xfstests xunit field.""" name = GObject.Property(type=str)