Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / build / android / pylib / device / device_errors.py
1 # Copyright 2014 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 """
6 Exception classes raised by AdbWrapper and DeviceUtils.
7 """
8
9 class BaseError(Exception):
10   """Base exception for all device and command errors."""
11   pass
12
13
14 class CommandFailedError(BaseError):
15   """Exception for command failures."""
16
17   def __init__(self, msg, device=None):
18     super(CommandFailedError, self).__init__(
19         '%s%s' % ('(device: %s) ' % device if device else '', msg))
20
21
22 class AdbCommandFailedError(CommandFailedError):
23   """Exception for adb command failures."""
24
25   def __init__(self, cmd, msg, device=None):
26     super(AdbCommandFailedError, self).__init__(
27         'adb command %r failed with message: %s' % (' '.join(cmd), msg),
28         device=device)
29
30
31 class AdbShellCommandFailedError(AdbCommandFailedError):
32   """Exception for adb shell command failing with non-zero return code."""
33
34   def __init__(self, cmd, return_code, output, device=None):
35     super(AdbShellCommandFailedError, self).__init__(
36         ['shell'],
37         'command %r on device failed with return code %d and output %r'
38         % (cmd, return_code, output),
39         device=device)
40     self.return_code = return_code
41     self.output = output
42
43
44 class CommandTimeoutError(BaseError):
45   """Exception for command timeouts."""
46   pass
47
48
49 class DeviceUnreachableError(BaseError):
50   """Exception for device unreachable failures."""
51   pass
52
53
54 class NoDevicesError(BaseError):
55   """Exception for having no devices attached."""
56
57   def __init__(self):
58     super(NoDevicesError, self).__init__('No devices attached.')
59