| OLD | NEW |
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Class representing instrumentation test apk and jar.""" | 5 """Class representing instrumentation test apk and jar.""" |
| 6 | 6 |
| 7 import os | 7 import os |
| 8 | 8 |
| 9 from devil.android import apk_helper | 9 from devil.android import apk_helper |
| 10 from pylib.instrumentation import test_jar | 10 from pylib.instrumentation import test_jar |
| 11 from pylib.local.device import local_device_test_run |
| 11 | 12 |
| 12 | 13 |
| 13 class TestPackage(test_jar.TestJar): | 14 class TestPackage(test_jar.TestJar): |
| 14 def __init__(self, apk_path, jar_path, test_support_apk_path, | 15 def __init__(self, apk_path, jar_path, test_support_apk_path, |
| 15 additional_apks=None, apk_under_test=None): | 16 additional_apks=None, apk_under_test=None, |
| 17 test_apk_incremental_install_script=None, |
| 18 apk_under_test_incremental_install_script=None): |
| 16 test_jar.TestJar.__init__(self, jar_path) | 19 test_jar.TestJar.__init__(self, jar_path) |
| 17 | 20 |
| 18 if not os.path.exists(apk_path): | 21 if not os.path.exists(apk_path): |
| 19 raise Exception('%s not found, please build it' % apk_path) | 22 raise Exception('%s not found, please build it' % apk_path) |
| 20 self._additional_apks = additional_apks or [] | 23 self._additional_apks = additional_apks or [] |
| 21 self._apk_name = os.path.splitext(os.path.basename(apk_path))[0] | 24 self._apk_name = os.path.splitext(os.path.basename(apk_path))[0] |
| 22 if apk_under_test: | 25 if apk_under_test: |
| 23 self._apk_under_test = apk_helper.ApkHelper(apk_under_test) | 26 self._apk_under_test = apk_helper.ApkHelper(apk_under_test) |
| 24 else: | 27 else: |
| 25 self._apk_under_test = None | 28 self._apk_under_test = None |
| 26 self._test_apk = apk_helper.ApkHelper(apk_path) | 29 self._test_apk = apk_helper.ApkHelper(apk_path) |
| 27 self._test_support_apk_path = test_support_apk_path | 30 self._test_support_apk_path = test_support_apk_path |
| 31 self._test_apk_incremental_install_script = ( |
| 32 test_apk_incremental_install_script) |
| 33 self._apk_under_test_incremental_install_script = ( |
| 34 apk_under_test_incremental_install_script) |
| 28 | 35 |
| 29 def GetApkPath(self): | 36 def GetApkPath(self): |
| 30 """Returns the absolute path to the APK.""" | 37 """Returns the absolute path to the APK.""" |
| 31 return self._test_apk.path | 38 return self._test_apk.path |
| 32 | 39 |
| 33 def GetApkUnderTest(self): | 40 def GetApkUnderTest(self): |
| 34 """Returns an ApkHelper instance for the apk under test. | 41 """Returns an ApkHelper instance for the apk under test. |
| 35 | 42 |
| 36 Note that --apk-under-test is not required, so this can be None. | 43 Note that --apk-under-test is not required, so this can be None. |
| 37 """ | 44 """ |
| 38 return self._apk_under_test | 45 return self._apk_under_test |
| 39 | 46 |
| 40 def GetApkName(self): | 47 def GetApkName(self): |
| 41 """Returns the name of the apk without the suffix.""" | 48 """Returns the name of the apk without the suffix.""" |
| 42 return self._apk_name | 49 return self._apk_name |
| 43 | 50 |
| 44 def GetPackageName(self): | 51 def GetPackageName(self): |
| 45 """Returns the package name of this APK.""" | 52 """Returns the package name of this APK.""" |
| 46 return self._test_apk.GetPackageName() | 53 return self._test_apk.GetPackageName() |
| 47 | 54 |
| 48 def GetTestApk(self): | 55 def GetTestApk(self): |
| 49 """Returns an ApkHelper instance for the test apk.""" | 56 """Returns an ApkHelper instance for the test apk.""" |
| 50 return self._test_apk | 57 return self._test_apk |
| 51 | 58 |
| 52 # Override. | 59 # Override. |
| 53 def Install(self, device): | 60 def Install(self, device): |
| 54 if self._apk_under_test: | 61 if self._test_apk_incremental_install_script: |
| 55 device.Install(self._apk_under_test.path) | 62 local_device_test_run.IncrementalInstall(device, self._test_apk, |
| 56 device.Install(self.GetApkPath()) | 63 self._test_apk_incremental_install_script) |
| 64 else: |
| 65 device.Install(self._test_apk) |
| 66 |
| 67 if self._apk_under_test_incremental_install_script: |
| 68 local_device_test_run.IncrementalInstall(device, |
| 69 self._apk_under_test, self._apk_under_test_incremental_install_script) |
| 70 elif self._apk_under_test: |
| 71 device.Install(self._apk_under_test) |
| 72 |
| 57 if (self._test_support_apk_path and | 73 if (self._test_support_apk_path and |
| 58 os.path.exists(self._test_support_apk_path)): | 74 os.path.exists(self._test_support_apk_path)): |
| 59 device.Install(self._test_support_apk_path) | 75 device.Install(self._test_support_apk_path) |
| 60 for apk in (a for a in self._additional_apks if os.path.exists(a)): | 76 for apk in (a for a in self._additional_apks if os.path.exists(a)): |
| 61 device.Install(apk) | 77 device.Install(apk) |
| OLD | NEW |