Index: build/android/pylib/local/device/local_device_gtest_run.py |
diff --git a/build/android/pylib/gtest/local_device_gtest_run.py b/build/android/pylib/local/device/local_device_gtest_run.py |
similarity index 90% |
rename from build/android/pylib/gtest/local_device_gtest_run.py |
rename to build/android/pylib/local/device/local_device_gtest_run.py |
index 6960b4f4565bba49314e7a1e5d80ec2f55f2e5bd..a8452600791a8c08d80b7af19713bd76d3b0a6b0 100644 |
--- a/build/android/pylib/gtest/local_device_gtest_run.py |
+++ b/build/android/pylib/local/device/local_device_gtest_run.py |
@@ -3,7 +3,6 @@ |
# found in the LICENSE file. |
import itertools |
-import logging |
import os |
import posixpath |
@@ -108,10 +107,13 @@ class _ExeDelegate(object): |
device.PushChangedFiles(host_device_tuples) |
def Run(self, test, device, flags=None, **kwargs): |
- cmd = [ |
- self._test_run.GetTool(device).GetTestWrapper(), |
- self._exe_device_path, |
- ] |
+ tool = self._test_run.GetTool(device).GetTestWrapper() |
+ if tool: |
+ cmd = [tool] |
+ else: |
+ cmd = [] |
+ cmd.append(self._exe_device_path) |
+ |
if test: |
cmd.append('--gtest_filter=%s' % ':'.join(test)) |
if flags: |
@@ -130,14 +132,8 @@ class _ExeDelegate(object): |
except (device_errors.CommandFailedError, KeyError): |
pass |
- # TODO(jbudorick): Switch to just RunShellCommand once perezju@'s CL |
- # for long shell commands lands. |
- with device_temp_file.DeviceTempFile(device.adb) as script_file: |
- script_contents = ' '.join(cmd) |
- logging.info('script contents: %r', script_contents) |
- device.WriteFile(script_file.name, script_contents) |
- output = device.RunShellCommand(['sh', script_file.name], cwd=cwd, |
- env=env, **kwargs) |
+ output = device.RunShellCommand( |
+ cmd, cwd=cwd, env=env, check_return=True, large_output=True, **kwargs) |
return output |
def PullAppFiles(self, device, files, directory): |
@@ -168,6 +164,7 @@ class LocalDeviceGtestRun(local_device_test_run.LocalDeviceTestRun): |
#override |
def SetUp(self): |
+ @local_device_test_run.handle_shard_failures |
def individual_device_set_up(dev, host_device_tuples): |
# Install test APK. |
self._delegate.Install(dev) |
@@ -207,10 +204,16 @@ class LocalDeviceGtestRun(local_device_test_run.LocalDeviceTestRun): |
#override |
def _GetTests(self): |
- tests = self._delegate.Run( |
- None, self._env.devices[0], flags='--gtest_list_tests') |
- tests = gtest_test_instance.ParseGTestListTests(tests) |
- tests = self._test_instance.FilterTests(tests) |
+ @local_device_test_run.handle_shard_failures |
+ def list_tests(dev): |
+ tests = self._delegate.Run( |
+ None, dev, flags='--gtest_list_tests', timeout=10) |
+ tests = gtest_test_instance.ParseGTestListTests(tests) |
+ tests = self._test_instance.FilterTests(tests) |
+ return tests |
+ |
+ test_lists = self._env.parallel_devices.pMap(list_tests).pGet(None) |
+ tests = list(sorted(set().union(*[set(tl) for tl in test_lists if tl]))) |
return tests |
#override |
@@ -233,6 +236,7 @@ class LocalDeviceGtestRun(local_device_test_run.LocalDeviceTestRun): |
#override |
def TearDown(self): |
+ @local_device_test_run.handle_shard_failures |
def individual_device_tear_down(dev): |
for s in self._servers[str(dev)]: |
s.TearDown() |