1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 """Class for running uiautomator tests on a single device.""" 6 7 from pylib.instrumentation import test_options as instr_test_options 8 from pylib.instrumentation import test_runner as instr_test_runner 9 10 11 class TestRunner(instr_test_runner.TestRunner): 12 """Responsible for running a series of tests connected to a single device.""" 13 14 def __init__(self, test_options, device, shard_index, test_pkg, 15 ports_to_forward): 16 """Create a new TestRunner. 17 18 Args: 19 test_options: A UIAutomatorOptions object. 20 device: Attached android device. 21 shard_index: Shard index. 22 test_pkg: A TestPackage object. 23 ports_to_forward: A list of port numbers for which to set up forwarders. 24 Can be optionally requested by a test case. 25 """ 26 # Create an InstrumentationOptions object to pass to the super class 27 instrumentation_options = instr_test_options.InstrumentationOptions( 28 test_options.build_type, 29 test_options.tool, 30 test_options.cleanup_test_files, 31 test_options.push_deps, 32 test_options.annotations, 33 test_options.exclude_annotations, 34 test_options.test_filter, 35 test_options.test_data, 36 test_options.save_perf_json, 37 test_options.screenshot_failures, 38 wait_for_debugger=False, 39 test_apk=None, 40 test_apk_path=None, 41 test_apk_jar_path=None) 42 super(TestRunner, self).__init__(instrumentation_options, device, 43 shard_index, test_pkg, ports_to_forward) 44 45 self.package_name = test_options.package_name 46 47 #override 48 def InstallTestPackage(self): 49 self.test_pkg.Install(self.adb) 50 51 #override 52 def PushDataDeps(self): 53 pass 54 55 #override 56 def _RunTest(self, test, timeout): 57 self.adb.ClearApplicationState(self.package_name) 58 if 'Feature:FirstRunExperience' in self.test_pkg.GetTestAnnotations(test): 59 self.flags.RemoveFlags(['--disable-fre']) 60 else: 61 self.flags.AddFlags(['--disable-fre']) 62 return self.adb.RunUIAutomatorTest( 63 test, self.test_pkg.GetPackageName(), timeout) 64