1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)""" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)Exception classes raised by AdbWrapper and DeviceUtils. 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)""" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class BaseError(Exception): 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) """Base exception for all device and command errors.""" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class CommandFailedError(BaseError): 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) """Exception for command failures.""" 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def __init__(self, msg, device=None): 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) super(CommandFailedError, self).__init__( 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch '%s%s' % ('(device: %s) ' % device if device else '', msg)) 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass AdbCommandFailedError(CommandFailedError): 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch """Exception for adb command failures.""" 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def __init__(self, cmd, msg, device=None): 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch super(AdbCommandFailedError, self).__init__( 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'adb command \'%s\' failed with message: \'%s\'' % (' '.join(cmd), msg), 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch device=device) 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class CommandTimeoutError(BaseError): 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) """Exception for command timeouts.""" 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DeviceUnreachableError(BaseError): 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) """Exception for device unreachable failures.""" 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class NoDevicesError(BaseError): 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Exception for having no devices attached.""" 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def __init__(self): 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) super(NoDevicesError, self).__init__('No devices attached.') 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 47