| 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 """Provides an interface to communicate with the device via the adb command. | 5 """Provides an interface to communicate with the device via the adb command. |
| 6 | 6 |
| 7 Assumes adb binary is currently on system path. | 7 Assumes adb binary is currently on system path. |
| 8 """ | 8 """ |
| 9 # pylint: disable-all | 9 # pylint: disable-all |
| 10 | 10 |
| (...skipping 1212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1223 """Lists files in all subdirectories of |path|. | 1223 """Lists files in all subdirectories of |path|. |
| 1224 | 1224 |
| 1225 Args: | 1225 Args: |
| 1226 path: The path to list. | 1226 path: The path to list. |
| 1227 | 1227 |
| 1228 Returns: | 1228 Returns: |
| 1229 A dict of {"name": (size, lastmod), ...}. | 1229 A dict of {"name": (size, lastmod), ...}. |
| 1230 """ | 1230 """ |
| 1231 # Example output: | 1231 # Example output: |
| 1232 # /foo/bar: | 1232 # /foo/bar: |
| 1233 # -rw-r----- 1 user group 102 2011-05-12 12:29:54.131623387 +0100 baz.txt | 1233 # -rw-r----- user group 102 2011-05-12 12:29:54.131623387 +0100 baz.txt |
| 1234 re_file = re.compile('^-(?P<perms>[^\s]+)\s+' | 1234 re_file = re.compile('^-(?P<perms>[^\s]+)\s+' |
| 1235 '(?P<user>[^\s]+)\s+' | 1235 '(?P<user>[^\s]+)\s+' |
| 1236 '(?P<group>[^\s]+)\s+' | 1236 '(?P<group>[^\s]+)\s+' |
| 1237 '(?P<size>[^\s]+)\s+' | 1237 '(?P<size>[^\s]+)\s+' |
| 1238 '(?P<date>[^\s]+)\s+' | 1238 '(?P<date>[^\s]+)\s+' |
| 1239 '(?P<time>[^\s]+)\s+' | 1239 '(?P<time>[^\s]+)\s+' |
| 1240 '(?P<filename>[^\s]+)$') | 1240 '(?P<filename>[^\s]+)$') |
| 1241 return _GetFilesFromRecursiveLsOutput( | 1241 return _GetFilesFromRecursiveLsOutput( |
| 1242 path, self.RunShellCommand('ls -lR %s' % path), re_file, | 1242 path, self.RunShellCommand('ls -lR %s' % path), re_file, |
| 1243 self.GetUtcOffset()) | 1243 self.GetUtcOffset()) |
| 1244 | 1244 |
| 1245 def GetUtcOffset(self): | 1245 def GetUtcOffset(self): |
| 1246 if not self._device_utc_offset: | 1246 if not self._device_utc_offset: |
| 1247 self._device_utc_offset = self.RunShellCommand('date +%z')[0] | 1247 self._device_utc_offset = self.RunShellCommand('date +%z')[0] |
| 1248 return self._device_utc_offset | 1248 return self._device_utc_offset |
| 1249 | 1249 |
| 1250 def SetJavaAssertsEnabled(self, enable): | 1250 def SetJavaAssertsEnabled(self, enable): |
| 1251 """Sets or removes the device java assertions property. | 1251 """Sets or removes the device java assertions property. |
| 1252 | 1252 |
| 1253 Args: | 1253 Args: |
| 1254 enable: If True the property will be set. | 1254 enable: If True the property will be set. |
| 1255 | 1255 |
| 1256 Returns: | 1256 Returns: |
| 1257 True if the file was modified (reboot is required for it to take effect). | 1257 True if the file was modified (reboot is required for it to take effect). |
| 1258 """ | 1258 """ |
| 1259 # First ensure the desired property is persisted. | 1259 # First ensure the desired property is persisted. |
| 1260 temp_props_file = tempfile.NamedTemporaryFile() | 1260 temp_props_file = tempfile.NamedTemporaryFile() |
| 1261 properties = '' | 1261 properties = '' |
| 1262 if self._adb.Pull(LOCAL_PROPERTIES_PATH, temp_props_file.name): | 1262 if self._adb.Pull(LOCAL_PROPERTIES_PATH, temp_props_file.name): |
| 1263 properties = file(temp_props_file.name).read() | 1263 with open(temp_props_file.name) as f: |
| 1264 properties = f.read() |
| 1264 re_search = re.compile(r'^\s*' + re.escape(JAVA_ASSERT_PROPERTY) + | 1265 re_search = re.compile(r'^\s*' + re.escape(JAVA_ASSERT_PROPERTY) + |
| 1265 r'\s*=\s*all\s*$', re.MULTILINE) | 1266 r'\s*=\s*all\s*$', re.MULTILINE) |
| 1266 if enable != bool(re.search(re_search, properties)): | 1267 if enable != bool(re.search(re_search, properties)): |
| 1267 re_replace = re.compile(r'^\s*' + re.escape(JAVA_ASSERT_PROPERTY) + | 1268 re_replace = re.compile(r'^\s*' + re.escape(JAVA_ASSERT_PROPERTY) + |
| 1268 r'\s*=\s*\w+\s*$', re.MULTILINE) | 1269 r'\s*=\s*\w+\s*$', re.MULTILINE) |
| 1269 properties = re.sub(re_replace, '', properties) | 1270 properties = re.sub(re_replace, '', properties) |
| 1270 if enable: | 1271 if enable: |
| 1271 properties += '\n%s=all\n' % JAVA_ASSERT_PROPERTY | 1272 properties += '\n%s=all\n' % JAVA_ASSERT_PROPERTY |
| 1272 | 1273 |
| 1273 file(temp_props_file.name, 'w').write(properties) | 1274 file(temp_props_file.name, 'w').write(properties) |
| (...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1968 """ | 1969 """ |
| 1969 def __init__(self, output): | 1970 def __init__(self, output): |
| 1970 self._output = output | 1971 self._output = output |
| 1971 | 1972 |
| 1972 def write(self, data): | 1973 def write(self, data): |
| 1973 data = data.replace('\r\r\n', '\n') | 1974 data = data.replace('\r\r\n', '\n') |
| 1974 self._output.write(data) | 1975 self._output.write(data) |
| 1975 | 1976 |
| 1976 def flush(self): | 1977 def flush(self): |
| 1977 self._output.flush() | 1978 self._output.flush() |
| OLD | NEW |