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