Index: build/android/pylib/remote/device/remote_device_gtest_run.py |
diff --git a/build/android/pylib/remote/device/remote_device_gtest_run.py b/build/android/pylib/remote/device/remote_device_gtest_run.py |
index 3a6c4475101b7cdd51ab8c44a2d6caee087eb286..e5f6990c53e14f7ea04c6425013ce791c8dafec3 100644 |
--- a/build/android/pylib/remote/device/remote_device_gtest_run.py |
+++ b/build/android/pylib/remote/device/remote_device_gtest_run.py |
@@ -7,6 +7,7 @@ |
import logging |
import os |
import sys |
+import tempfile |
from pylib import constants |
from pylib.base import base_test_result |
@@ -15,6 +16,14 @@ from pylib.remote.device import remote_device_test_run |
from pylib.remote.device import remote_device_helper |
+_EXTRA_COMMAND_LINE_FILE = ( |
+ 'org.chromium.native_test.ChromeNativeTestActivity.CommandLineFile') |
+# TODO(jbudorick): Remove this extra when b/18981674 is fixed. |
+_EXTRA_ONLY_OUTPUT_FAILURES = ( |
+ 'org.chromium.native_test.ChromeNativeTestInstrumentationTestRunner.' |
+ 'OnlyOutputFailures') |
+ |
+ |
class RemoteDeviceGtestRun(remote_device_test_run.RemoteDeviceTestRun): |
"""Run gtests and uirobot tests on a remote device.""" |
@@ -43,8 +52,20 @@ class RemoteDeviceGtestRun(remote_device_test_run.RemoteDeviceTestRun): |
dummy_app_path = os.path.join( |
constants.GetOutDirectory(), 'apks', 'remote_device_dummy.apk') |
- self._AmInstrumentTestSetup(dummy_app_path, self._test_instance.apk, |
- runner_package) |
+ with tempfile.NamedTemporaryFile(suffix='.flags.txt') as flag_file: |
+ env_vars = {} |
+ filter_string = self._test_instance._GenerateDisabledFilterString(None) |
+ if filter_string: |
+ flag_file.write('_ --gtest_filter=%s' % filter_string) |
+ flag_file.flush() |
+ env_vars[_EXTRA_COMMAND_LINE_FILE] = os.path.basename(flag_file.name) |
+ self._test_instance._data_deps.append( |
+ (os.path.abspath(flag_file.name), None)) |
+ if self._env.only_output_failures: |
+ env_vars[_EXTRA_ONLY_OUTPUT_FAILURES] = None |
+ self._AmInstrumentTestSetup( |
+ dummy_app_path, self._test_instance.apk, runner_package, |
+ environment_variables=env_vars) |
_INSTRUMENTATION_STREAM_LEADER = 'INSTRUMENTATION_STATUS: stream=' |
@@ -62,6 +83,8 @@ class RemoteDeviceGtestRun(remote_device_test_run.RemoteDeviceTestRun): |
if l.startswith(self._INSTRUMENTATION_STREAM_LEADER)) |
results_list = self._test_instance.ParseGTestOutput(output) |
results.AddResults(results_list) |
+ if self._env.only_output_failures: |
+ logging.info('See logcat for more results information.') |
if not self._results['results']['pass']: |
results.AddResult(base_test_result.BaseTestResult( |
'Remote Service detected error.', |