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 <anna@nowheycreamery.com>
This commit is contained in:
Anna Schumaker 2023-08-15 11:26:43 -04:00
parent 4d3425bb57
commit ad08357121
2 changed files with 42 additions and 17 deletions

View File

@ -9,23 +9,35 @@ from gi.repository import Gio
from gi.repository import Gtk 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.""" """Tests a single TestCase Xunit instance."""
def test_xunit_result(self): def test_xunit_result(self):
"""Test creating an xunit instance.""" """Test creating an xunit instance."""
xunit = xfstestsdb.gtk.model.XunitResult(name="my xunit name", xunit = xfstestsdb.gtk.model.TestResult(name="my xunit name",
status="passed", time=123, status="passed", time=123,
message="my message", message="my message",
stdout="my stdout", stdout="my stdout",
stderr="my stderr") stderr="my stderr")
self.assertIsInstance(xunit, GObject.GObject) self.assertIsInstance(xunit, xfstestsdb.gtk.model.XunitCell)
self.assertEqual(xunit.name, "my xunit name") self.assertEqual(xunit.name, "my xunit name")
self.assertEqual(xunit.status, "passed") self.assertEqual(xunit.status, "passed")
self.assertEqual(xunit.time, 123) self.assertEqual(xunit.time, 123)
self.assertEqual(xunit.message, "my message") self.assertEqual(xunit.message, "my message")
self.assertEqual(xunit.stdout, "my stdout") self.assertEqual(xunit.stdout, "my stdout")
self.assertEqual(xunit.stderr, "my stderr") self.assertEqual(xunit.stderr, "my stderr")
self.assertEqual(str(xunit), "passed")
class TestTestCase(unittest.TestCase): class TestTestCase(unittest.TestCase):
@ -54,7 +66,7 @@ class TestTestCase(unittest.TestCase):
self.testcase.add_xunit("xunit-1", "passed", 123, "message", self.testcase.add_xunit("xunit-1", "passed", 123, "message",
"stdout", "stderr") "stdout", "stderr")
xunit = self.testcase["xunit-1"] 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.name, "xunit-1")
self.assertEqual(xunit.status, "passed") self.assertEqual(xunit.status, "passed")
self.assertEqual(xunit.time, 123) self.assertEqual(xunit.time, 123)
@ -64,7 +76,7 @@ class TestTestCase(unittest.TestCase):
self.testcase.add_xunit("xunit-2", "failed", 456, None, None, None) self.testcase.add_xunit("xunit-2", "failed", 456, None, None, None)
xunit = self.testcase["xunit-2"] 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.name, "xunit-2")
self.assertEqual(xunit.status, "failed") self.assertEqual(xunit.status, "failed")
self.assertEqual(xunit.time, 456) self.assertEqual(xunit.time, 456)
@ -214,7 +226,7 @@ class TestSummaryValue(unittest.TestCase):
value = xfstestsdb.gtk.model.SummaryValue(name="my xunit name", value = xfstestsdb.gtk.model.SummaryValue(name="my xunit name",
value=12345, value=12345,
unit="testcase") unit="testcase")
self.assertIsInstance(value, GObject.GObject) self.assertIsInstance(value, xfstestsdb.gtk.model.XunitCell)
self.assertEqual(value.name, "my xunit name") self.assertEqual(value.name, "my xunit name")
self.assertEqual(value.unit, "testcase") self.assertEqual(value.unit, "testcase")
self.assertEqual(value.value, 12345) self.assertEqual(value.value, 12345)

View File

@ -7,16 +7,29 @@ from gi.repository import Gtk
from .. import sqlite from .. import sqlite
class XunitResult(GObject.GObject): class XunitCell(GObject.GObject):
"""The results for a single TestCase with a specific Xunit.""" """Holds a single value for a single Xunit."""
name = GObject.Property(type=str) 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) status = GObject.Property(type=str)
time = GObject.Property(type=int) time = GObject.Property(type=int)
message = GObject.Property(type=str) message = GObject.Property(type=str)
stdout = GObject.Property(type=str) stdout = GObject.Property(type=str)
stderr = 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): class TestCase(GObject.GObject):
"""Collects results for a single TestCase with multiple Xunits.""" """Collects results for a single TestCase with multiple Xunits."""
@ -28,7 +41,7 @@ class TestCase(GObject.GObject):
super().__init__(name=name) super().__init__(name=name)
self.__xunits = {} self.__xunits = {}
def __getitem__(self, xunit: str) -> XunitResult | None: def __getitem__(self, xunit: str) -> TestResult | None:
"""Get the results for a specific Xunit.""" """Get the results for a specific Xunit."""
return self.__xunits.get(xunit) return self.__xunits.get(xunit)
@ -43,9 +56,9 @@ class TestCase(GObject.GObject):
message = "" if message is None else message message = "" if message is None else message
stdout = "" if stdout is None else stdout stdout = "" if stdout is None else stdout
stderr = "" if stderr is None else stderr stderr = "" if stderr is None else stderr
self.__xunits[name] = XunitResult(name=name, status=status, time=time, self.__xunits[name] = TestResult(name=name, status=status, time=time,
message=message, stdout=stdout, message=message, stdout=stdout,
stderr=stderr) stderr=stderr)
def get_results(self) -> set[str]: def get_results(self) -> set[str]:
"""Get a set of results for each added xunit.""" """Get a set of results for each added xunit."""
@ -134,7 +147,7 @@ class TestCaseFilter(Gtk.Filter):
return False return False
class SummaryValue(GObject.GObject): class SummaryValue(XunitCell):
"""The summary of a single Xfstests xunit field.""" """The summary of a single Xfstests xunit field."""
name = GObject.Property(type=str) name = GObject.Property(type=str)