kunit: tool: make TestCounts a dataclass
authorDaniel Latypov <dlatypov@google.com>
Thu, 3 Nov 2022 17:47:38 +0000 (10:47 -0700)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 12 Dec 2022 21:13:47 +0000 (14:13 -0700)
Since we're using Python 3.7+, we can use dataclasses to tersen the
code.

It also lets us create pre-populated TestCounts() objects and compare
them in our unit test. (Before, you could only create empty ones).

Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/kunit/kunit_parser.py
tools/testing/kunit/kunit_tool_test.py

index 94dba66..a56c75a 100644 (file)
@@ -10,6 +10,7 @@
 # Author: Rae Moar <rmoar@google.com>
 
 from __future__ import annotations
+from dataclasses import dataclass
 import re
 import sys
 
@@ -71,27 +72,17 @@ class TestStatus(Enum):
        NO_TESTS = auto()
        FAILURE_TO_PARSE_TESTS = auto()
 
+@dataclass
 class TestCounts:
        """
        Tracks the counts of statuses of all test cases and any errors within
        a Test.
-
-       Attributes:
-       passed : int - the number of tests that have passed
-       failed : int - the number of tests that have failed
-       crashed : int - the number of tests that have crashed
-       skipped : int - the number of tests that have skipped
-       errors : int - the number of errors in the test and subtests
-       """
-       def __init__(self):
-               """Creates TestCounts object with counts of all test
-               statuses and test errors set to 0.
-               """
-               self.passed = 0
-               self.failed = 0
-               self.crashed = 0
-               self.skipped = 0
-               self.errors = 0
+       """
+       passed: int = 0
+       failed: int = 0
+       crashed: int = 0
+       skipped: int = 0
+       errors: int = 0
 
        def __str__(self) -> str:
                """Returns the string representation of a TestCounts object."""
index 7dcd670..440a273 100755 (executable)
@@ -182,9 +182,7 @@ class KUnitParserTest(unittest.TestCase):
                                kunit_parser.extract_tap_lines(
                                file.readlines()))
                # A missing test plan is not an error.
-               self.assertEqual(0, result.counts.errors)
-               # All tests should be accounted for.
-               self.assertEqual(10, result.counts.total())
+               self.assertEqual(result.counts, kunit_parser.TestCounts(passed=10, errors=0))
                self.assertEqual(
                        kunit_parser.TestStatus.SUCCESS,
                        result.status)