Index: build/android/pylib/device/device_utils_test.py |
diff --git a/build/android/pylib/device/device_utils_test.py b/build/android/pylib/device/device_utils_test.py |
index 23a1a325e7680dda7e12d2fa8a3c8e6a084b8d3b..317e81e83b619ea83afa8b93c9cab6767a8c1159 100755 |
--- a/build/android/pylib/device/device_utils_test.py |
+++ b/build/android/pylib/device/device_utils_test.py |
@@ -140,6 +140,18 @@ class DeviceUtilsTest(mock_calls.TestCase): |
self.adb, default_timeout=10, default_retries=0) |
self.watchMethodCalls(self.call.adb, ignore=['GetDeviceSerial']) |
+ def AdbCommandError(self, args=None, output=None, status=None, msg=None): |
+ if args is None: |
+ args = ['[unspecified]'] |
+ return mock.Mock(side_effect=device_errors.AdbCommandFailedError( |
+ args, output, status, msg, str(self.device))) |
+ |
+ def CommandError(self, msg=None): |
+ if msg is None: |
+ msg = 'Command failed' |
+ return mock.Mock(side_effect=device_errors.CommandFailedError( |
+ msg, str(self.device))) |
+ |
def ShellError(self, output=None, status=1): |
def action(cmd, *args, **kwargs): |
raise device_errors.AdbShellCommandFailedError( |
@@ -154,12 +166,6 @@ class DeviceUtilsTest(mock_calls.TestCase): |
return mock.Mock(side_effect=device_errors.CommandTimeoutError( |
msg, str(self.device))) |
- def CommandError(self, msg=None): |
- if msg is None: |
- msg = 'Command failed' |
- return mock.Mock(side_effect=device_errors.CommandFailedError( |
- msg, str(self.device))) |
- |
class DeviceUtilsEqTest(DeviceUtilsTest): |
@@ -259,8 +265,8 @@ class DeviceUtilsEnableRootTest(DeviceUtilsTest): |
def testEnableRoot_succeeds(self): |
with self.assertCalls( |
(self.call.device.IsUserBuild(), False), |
- self.call.adb.Root(), |
- self.call.adb.WaitForDevice()): |
+ self.call.adb.Root(), |
+ self.call.device.WaitUntilFullyBooted()): |
self.device.EnableRoot() |
def testEnableRoot_userBuild(self): |
@@ -362,6 +368,27 @@ class DeviceUtilsWaitUntilFullyBootedTest(DeviceUtilsTest): |
'stuff\nWi-Fi is enabled\nmore stuff\n')): |
self.device.WaitUntilFullyBooted(wifi=True) |
+ def testWaitUntilFullyBooted_deviceNotInitiallyAvailable(self): |
+ with self.assertCalls( |
+ self.call.adb.WaitForDevice(), |
+ # sd_card_ready |
+ (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), |
+ # sd_card_ready |
+ (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), |
+ # sd_card_ready |
+ (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), |
+ # sd_card_ready |
+ (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), |
+ # sd_card_ready |
+ (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), |
+ (self.call.adb.Shell('test -d /fake/storage/path'), ''), |
+ # pm_ready |
+ (self.call.device.GetApplicationPath('android'), |
+ 'package:/some/fake/path'), |
+ # boot_completed |
+ (self.call.device.GetProp('sys.boot_completed'), '1')): |
+ self.device.WaitUntilFullyBooted(wifi=False) |
+ |
def testWaitUntilFullyBooted_sdCardReadyFails_noPath(self): |
with self.assertCalls( |
self.call.adb.WaitForDevice(), |