pw_unit_test: Make py run_tests() return bool
Updates pw_unit_test.rpc.run_tests() to return True/False when the tests
pass or fail.
Change-Id: I3f5097d5eb4dae4c1d4fa9ad589adc0e731ba6c9
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/27680
Pigweed-Auto-Submit: Armando Montanez <amontanez@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/pw_unit_test/py/pw_unit_test/rpc.py b/pw_unit_test/py/pw_unit_test/rpc.py
index c3298a6..1d1cb5f 100644
--- a/pw_unit_test/py/pw_unit_test/rpc.py
+++ b/pw_unit_test/py/pw_unit_test/rpc.py
@@ -116,13 +116,16 @@
def run_tests(
rpcs: pw_rpc.client.Services,
report_passed_expectations: bool = False,
- event_handlers: Iterable[EventHandler] = (LoggingEventHandler(), )):
+ event_handlers: Iterable[EventHandler] = (LoggingEventHandler(), )
+) -> bool:
"""Runs unit tests on a device over Pigweed RPC.
- Calls each of the provided event handlers as test events occur.
+ Calls each of the provided event handlers as test events occur, and returns
+ True if all tests pass.
"""
unit_test_service = rpcs.pw.unit_test.UnitTest # type: ignore[attr-defined]
+ all_tests_passed = False
for response in unit_test_service.Run(
report_passed_expectations=report_passed_expectations):
if response.HasField('test_case_start'):
@@ -137,6 +140,8 @@
elif response.HasField('test_run_end'):
event_handler.run_all_tests_end(response.test_run_end.passed,
response.test_run_end.failed)
+ if response.test_run_end.failed == 0:
+ all_tests_passed = True
elif response.HasField('test_case_start'):
event_handler.test_case_start(current_test_case)
elif response.HasField('test_case_end'):
@@ -153,3 +158,5 @@
raw_expectation.success,
)
event_handler.test_case_expect(current_test_case, expectation)
+
+ return all_tests_passed