[PATCH v2] dts: update overall result pass/skip logic
Dean Marx
dmarx at iol.unh.edu
Fri Mar 13 19:22:40 CET 2026
Update overall result of test suites such that
when some cases skip and at least one passes,
the result is a pass instead of a skip. Only
when all cases skip is the result a skip.
Bugzilla ID: 1899
Signed-off-by: Dean Marx <dmarx at iol.unh.edu>
Tested-by: Andrew Bailey <abailey at iol.unh.edu>
Reviewed-by: Andrew Bailey <abailey at iol.unh.edu>
---
dts/framework/test_result.py | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/dts/framework/test_result.py b/dts/framework/test_result.py
index c6bddc55a9..e05663f90e 100644
--- a/dts/framework/test_result.py
+++ b/dts/framework/test_result.py
@@ -187,18 +187,23 @@ def serialize_model(self) -> dict[str, Any]:
def get_overall_result(self) -> ResultLeaf:
"""The overall result of the underlying results."""
-
- def extract_result(value: ResultNode | ResultLeaf) -> ResultLeaf:
- match value:
- case ResultNode():
- return value.get_overall_result()
- case ResultLeaf():
- return value
-
- return max(
- (extract_result(child) for child in self.children),
- default=ResultLeaf(result=Result.PASS),
- )
+ results = [
+ child.get_overall_result() if isinstance(child, ResultNode) else child
+ for child in self.children
+ ]
+ max_result = max(results, default=ResultLeaf(result=Result.PASS))
+
+ if max_result.result != Result.SKIP:
+ return max_result
+
+ if any(
+ r.result == Result.PASS
+ for child, r in zip(self.children, results)
+ if not (isinstance(child, ResultNode) and child.label in self.__ignore_steps)
+ ):
+ return ResultLeaf(result=Result.PASS)
+
+ return max_result
def make_summary(self) -> Counter[Result]:
"""Make the summary of the underlying results while ignoring special nodes."""
--
2.52.0
More information about the dev
mailing list