Index: build/android/pylib/remote/device/remote_device_environment.py |
diff --git a/build/android/pylib/remote/device/remote_device_environment.py b/build/android/pylib/remote/device/remote_device_environment.py |
index ee32332c9f1857f02e964205f4c05a73aa4b8bea..eff4e90815261d5592404a5be5223e0b3cc74938 100644 |
--- a/build/android/pylib/remote/device/remote_device_environment.py |
+++ b/build/android/pylib/remote/device/remote_device_environment.py |
@@ -82,8 +82,12 @@ class RemoteDeviceEnvironment(environment.Environment): |
def __enter__(self): |
"""Set up the test run when used as a context manager.""" |
- self.SetUp() |
- return self |
+ try: |
+ self.SetUp() |
+ return self |
+ except: |
+ self.__exit__(*sys.exc_info()) |
+ raise |
def __exit__(self, exc_type, exc_val, exc_tb): |
"""Tears down the test run when used as a context manager.""" |
@@ -118,9 +122,25 @@ class RemoteDeviceEnvironment(environment.Environment): |
if (device['name'] == self._remote_device |
and device['os_version'] == self._remote_device_os): |
return device['device_type_id'] |
- raise remote_device_helper.RemoteDeviceError( |
- 'No device found: %s %s' % (self._remote_device, |
- self._remote_device_os)) |
+ self._NoDeviceFound(device_list) |
+ |
+ def _PrintAvailableDevices(self, device_list): |
+ def compare_devices(a,b): |
+ for key in ('os_version', 'name'): |
+ c = cmp(a[key], b[key]) |
+ if c: |
+ return c |
+ return 0 |
+ |
+ logging.critical('Available Android Devices:') |
+ android_devices = (d for d in device_list if d['os_name'] == 'Android') |
+ for d in sorted(android_devices, compare_devices): |
+ logging.critical(' %s %s', d['os_version'].ljust(7), d['name']) |
+ |
+ def _NoDeviceFound(self, device_list): |
+ self._PrintAvailableDevices(device_list) |
+ raise remote_device_helper.RemoteDeviceError('No device found: %s %s' % |
+ (self._remote_device, self._remote_device_os)) |
@property |
def device(self): |