OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 | 5 |
6 import logging | 6 import logging |
7 import os | 7 import os |
8 import shlex | 8 import shlex |
9 import sys | 9 import sys |
10 import tempfile | 10 import tempfile |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 self.tool.SetupEnvironment() | 108 self.tool.SetupEnvironment() |
109 self._ClearFifo() | 109 self._ClearFifo() |
110 self.adb.RunShellCommand( | 110 self.adb.RunShellCommand( |
111 'am start -n ' + self._apk_package_name + '/' + | 111 'am start -n ' + self._apk_package_name + '/' + |
112 self._test_activity_name) | 112 self._test_activity_name) |
113 finally: | 113 finally: |
114 self.tool.CleanUpEnvironment() | 114 self.tool.CleanUpEnvironment() |
115 logfile = android_commands.NewLineNormalizer(sys.stdout) | 115 logfile = android_commands.NewLineNormalizer(sys.stdout) |
116 return self._WatchTestOutput(self._WatchFifo(timeout=10, logfile=logfile)) | 116 return self._WatchTestOutput(self._WatchFifo(timeout=10, logfile=logfile)) |
117 | 117 |
| 118 def _NeedsInstall(self): |
| 119 pm_path_output = self.adb.RunShellCommand( |
| 120 'pm path ' + self._apk_package_name) |
| 121 if not pm_path_output: |
| 122 return True |
| 123 # pm_path_output is of the form: "package:/path/to/foo.apk" |
| 124 installed_apk_path = pm_path_output[0].split(':')[1] |
| 125 return not self.adb.CheckMd5Sum( |
| 126 self.test_suite_full, installed_apk_path, ignore_paths=True) |
| 127 |
118 def StripAndCopyExecutable(self): | 128 def StripAndCopyExecutable(self): |
119 self.tool.CopyFiles() | 129 self.tool.CopyFiles() |
120 # Always uninstall the previous one (by activity name); we don't | 130 if self._NeedsInstall(): |
121 # know what was embedded in it. | 131 # Always uninstall the previous one (by activity name); we don't |
122 self.adb.ManagedInstall(self.test_suite_full, False, | 132 # know what was embedded in it. |
123 package_name=self._apk_package_name) | 133 self.adb.ManagedInstall(self.test_suite_full, False, |
| 134 package_name=self._apk_package_name) |
124 | 135 |
125 def _GetTestSuiteBaseName(self): | 136 def _GetTestSuiteBaseName(self): |
126 """Returns the base name of the test suite.""" | 137 """Returns the base name of the test suite.""" |
127 # APK test suite names end with '-debug.apk' | 138 # APK test suite names end with '-debug.apk' |
128 return os.path.basename(self.test_suite).rsplit('-debug', 1)[0] | 139 return os.path.basename(self.test_suite).rsplit('-debug', 1)[0] |
OLD | NEW |