mirror of
https://github.com/xemu-project/xemu-test.git
synced 2026-01-31 01:25:21 +01:00
Include subtest duration in report
This commit is contained in:
@@ -137,6 +137,7 @@ def main():
|
||||
[
|
||||
full_name,
|
||||
format_status(test_result),
|
||||
test_result.duration,
|
||||
test_result.message,
|
||||
]
|
||||
]
|
||||
@@ -149,7 +150,7 @@ def main():
|
||||
for test_result in test_results_summary.values():
|
||||
rows.extend(collect_rows(test_result))
|
||||
|
||||
summary.add_table(headers=["Test", "Status", "Details"], rows=rows)
|
||||
summary.add_table(headers=["Test", "Status", "Duration", "Details"], rows=rows)
|
||||
summary.write()
|
||||
|
||||
exit(0 if result else 1)
|
||||
|
||||
@@ -29,6 +29,7 @@ class TestResult:
|
||||
name: str
|
||||
status: TestStatus
|
||||
message: str = ""
|
||||
duration: str = "" # Duration string (e.g., "43ms")
|
||||
subtests: list["TestResult"] = field(default_factory=list)
|
||||
|
||||
@property
|
||||
@@ -72,11 +73,13 @@ class TestBase:
|
||||
"""
|
||||
pass
|
||||
|
||||
def add_subtest_result(self, name: str, status: TestStatus, message: str = ""):
|
||||
def add_subtest_result(
|
||||
self, name: str, status: TestStatus, message: str = "", duration: str = ""
|
||||
):
|
||||
"""Add a subtest result to the test results."""
|
||||
if self._test_result is None:
|
||||
return
|
||||
self._test_result.subtests.append(TestResult(name, status, message))
|
||||
self._test_result.subtests.append(TestResult(name, status, message, duration))
|
||||
if status == TestStatus.FAILED:
|
||||
self._test_result.status = TestStatus.FAILED
|
||||
|
||||
|
||||
@@ -42,11 +42,14 @@ class PgraphTestResult:
|
||||
renderer: str
|
||||
status: PgraphTestStatus
|
||||
message: str = ""
|
||||
duration: str = "" # Duration string from progress log (e.g., "43ms")
|
||||
|
||||
|
||||
@dataclass
|
||||
class PgraphTestSuiteAnalysis:
|
||||
tests_completed: list[PgraphTestId] = field(default_factory=list)
|
||||
tests_completed: list[tuple[PgraphTestId, str]] = field(
|
||||
default_factory=list
|
||||
) # (test_id, duration)
|
||||
tests_incomplete: list[PgraphTestId] = field(default_factory=list)
|
||||
|
||||
|
||||
@@ -142,11 +145,12 @@ renderer = '{renderer.upper()}'
|
||||
)
|
||||
|
||||
# Track completed tests (pending comparison)
|
||||
for test_id in progress_analysis.tests_completed:
|
||||
for test_id, duration in progress_analysis.tests_completed:
|
||||
self._pgraph_results[(renderer, test_id)] = PgraphTestResult(
|
||||
test_id=test_id,
|
||||
renderer=renderer,
|
||||
status=PgraphTestStatus.COMPLETED,
|
||||
duration=duration,
|
||||
)
|
||||
|
||||
# Track incomplete tests
|
||||
@@ -158,7 +162,9 @@ renderer = '{renderer.upper()}'
|
||||
message="Test did not complete",
|
||||
)
|
||||
|
||||
tests_ran.extend(progress_analysis.tests_completed)
|
||||
tests_ran.extend(
|
||||
test_id for test_id, _ in progress_analysis.tests_completed
|
||||
)
|
||||
tests_ran.extend(progress_analysis.tests_incomplete)
|
||||
|
||||
log.info(
|
||||
@@ -232,11 +238,11 @@ renderer = '{renderer.upper()}'
|
||||
suite, test = starting_matches.group("suite", "test")
|
||||
test_started = PgraphTestId(suite, test)
|
||||
elif completed_matches := COMPLETED_RE.match(line):
|
||||
test = completed_matches.group("test")
|
||||
test, duration = completed_matches.group("test", "duration")
|
||||
assert (
|
||||
test_started is not None and test_started.name == test
|
||||
), "Unmatched starting/completed sequence"
|
||||
analysis.tests_completed.append(test_started)
|
||||
analysis.tests_completed.append((test_started, duration))
|
||||
test_started = None
|
||||
elif line == "Testing completed normally, closing log.":
|
||||
continue
|
||||
@@ -307,7 +313,7 @@ renderer = '{renderer.upper()}'
|
||||
if status == TestStatus.FAILED:
|
||||
has_failures = True
|
||||
log.error("%s: %s", test_name, result.status.name)
|
||||
self.add_subtest_result(test_name, status, message)
|
||||
self.add_subtest_result(test_name, status, message, result.duration)
|
||||
|
||||
if has_failures:
|
||||
failed_count = sum(
|
||||
|
||||
Reference in New Issue
Block a user