Index: build/android/pylib/instrumentation/test_runner.py |
diff --git a/build/android/pylib/instrumentation/test_runner.py b/build/android/pylib/instrumentation/test_runner.py |
index 0f2e53fea733e032314bf5cee7ccd6d711e3df3b..82a093cffca8722609fdb7b6aeb62583cd2545d4 100644 |
--- a/build/android/pylib/instrumentation/test_runner.py |
+++ b/build/android/pylib/instrumentation/test_runner.py |
@@ -341,27 +341,30 @@ class TestRunner(base_test_runner.BaseTestRunner): |
start_ms = 0 |
duration_ms = 0 |
try: |
- self.TestSetup(test) |
- |
- try: |
- self.device.GoHome() |
- except device_errors.CommandTimeoutError: |
- logging.exception('Failed to focus the launcher.') |
- |
- time_ms = lambda: int(time.time() * 1000) |
- start_ms = time_ms() |
- raw_output = self._RunTest(test, timeout) |
- duration_ms = time_ms() - start_ms |
- |
- # Parse the test output |
- result_code, result_bundle, statuses = ( |
- instrumentation_test_instance.ParseAmInstrumentRawOutput(raw_output)) |
- result = self._GenerateTestResult( |
- test, result_code, result_bundle, statuses, start_ms, duration_ms) |
- if local_device_instrumentation_test_run.DidPackageCrashOnDevice( |
- self.test_pkg.GetPackageName(), self.device): |
- result.SetType(base_test_result.ResultType.CRASH) |
- results.AddResult(result) |
+ while True: |
+ self.TestSetup(test) |
+ |
+ try: |
+ self.device.GoHome() |
+ except device_errors.CommandTimeoutError: |
+ logging.exception('Failed to focus the launcher.') |
+ |
+ time_ms = lambda: int(time.time() * 1000) |
+ start_ms = time_ms() |
+ raw_output = self._RunTest(test, timeout) |
+ duration_ms = time_ms() - start_ms |
+ |
+ # Parse the test output |
+ result_code, result_bundle, statuses = ( |
+ instrumentation_test_instance.ParseAmInstrumentRawOutput(raw_output)) |
+ result = self._GenerateTestResult( |
+ test, result_code, result_bundle, statuses, start_ms, duration_ms) |
+ if local_device_instrumentation_test_run.DidPackageCrashOnDevice( |
+ self.test_pkg.GetPackageName(), self.device): |
+ result.SetType(base_test_result.ResultType.CRASH) |
+ results.AddResult(result) |
+ if result.GetType() not in [base_test_result.ResultType.PASS, base_test_result.ResultType.SKIP]: |
+ break |
except device_errors.CommandTimeoutError as e: |
results.AddResult(test_result.InstrumentationTestResult( |
test, base_test_result.ResultType.TIMEOUT, start_ms, duration_ms, |