Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2017 The Chromium Authors. All rights reserved. | 2 # Copyright 2017 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """ | 6 """ |
| 7 Unit tests for some APIs with conditional logic in adb_wrapper.py | 7 Unit tests for some APIs with conditional logic in adb_wrapper.py |
| 8 """ | 8 """ |
| 9 | 9 |
| 10 import unittest | 10 import unittest |
| 11 | 11 |
| 12 from devil import devil_env | 12 from devil import devil_env |
| 13 from devil.android import device_errors | 13 from devil.android import device_errors |
| 14 from devil.android.sdk import adb_wrapper | 14 from devil.android.sdk import adb_wrapper |
| 15 | 15 |
| 16 with devil_env.SysPath(devil_env.PYMOCK_PATH): | 16 with devil_env.SysPath(devil_env.PYMOCK_PATH): |
| 17 import mock # pylint: disable=import-error | 17 import mock # pylint: disable=import-error |
| 18 | 18 |
| 19 | 19 |
| 20 class AdbWrapperTest(unittest.TestCase): | 20 class AdbWrapperTest(unittest.TestCase): |
| 21 def setUp(self): | 21 def setUp(self): |
| 22 self.adb = adb_wrapper.AdbWrapper('ABC12345678') | 22 self.adb_wrapper_serial = adb_wrapper.AdbWrapper('ABC12345678') |
| 23 self.adb_wrapper_busid = adb_wrapper.AdbWrapper('usb:1-2.3') | |
| 24 self.adb_wrappers = [self.adb_wrapper_serial, self.adb_wrapper_busid] | |
| 23 | 25 |
| 24 def _MockRunDeviceAdbCmd(self, return_value): | 26 @staticmethod |
| 27 def _MockRunDeviceAdbCmd(adb, mock_return_value): | |
| 25 return mock.patch.object( | 28 return mock.patch.object( |
| 26 self.adb, | 29 adb, |
| 27 '_RunDeviceAdbCmd', | 30 '_RunDeviceAdbCmd', |
| 28 mock.Mock(side_effect=None, return_value=return_value)) | 31 mock.Mock(side_effect=None, return_value=mock_return_value)) |
| 32 | |
| 33 @staticmethod | |
| 34 def _MockRunAdbCmd(mock_return_value): | |
| 35 return mock.patch( | |
| 36 'devil.android.sdk.adb_wrapper.AdbWrapper._RunAdbCmd', | |
| 37 mock.Mock(side_effect=None, return_value=mock_return_value)) | |
| 29 | 38 |
| 30 def testDisableVerityWhenDisabled(self): | 39 def testDisableVerityWhenDisabled(self): |
| 31 with self._MockRunDeviceAdbCmd('Verity already disabled on /system'): | 40 mock_return_value = 'Verity already disabled on /system' |
| 32 self.adb.DisableVerity() | 41 with self._MockRunDeviceAdbCmd(self.adb_wrapper_serial, mock_return_value): |
| 42 self.adb_wrapper_serial.DisableVerity() | |
| 33 | 43 |
| 34 def testDisableVerityWhenEnabled(self): | 44 def testDisableVerityWhenEnabled(self): |
| 35 with self._MockRunDeviceAdbCmd( | 45 mock_return_value = 'Verity disabled on /system\nNow reboot your device '\ |
| 36 'Verity disabled on /system\nNow reboot your device for settings to ' | 46 'for settings to take effect' |
|
perezju
2017/07/04 08:24:01
nit: bad indent; try something like:
mock_return_
| |
| 37 'take effect'): | 47 with self._MockRunDeviceAdbCmd(self.adb_wrapper_serial, mock_return_value): |
| 38 self.adb.DisableVerity() | 48 self.adb_wrapper_serial.DisableVerity() |
| 39 | 49 |
| 40 def testEnableVerityWhenEnabled(self): | 50 def testEnableVerityWhenEnabled(self): |
| 41 with self._MockRunDeviceAdbCmd('Verity already enabled on /system'): | 51 mock_return_value = 'Verity already enabled on /system' |
| 42 self.adb.EnableVerity() | 52 with self._MockRunDeviceAdbCmd(self.adb_wrapper_serial, mock_return_value): |
| 53 self.adb_wrapper_serial.EnableVerity() | |
| 43 | 54 |
| 44 def testEnableVerityWhenDisabled(self): | 55 def testEnableVerityWhenDisabled(self): |
| 45 with self._MockRunDeviceAdbCmd( | 56 mock_return_value = 'Verity enabled on /system\nNow reboot your device '\ |
| 46 'Verity enabled on /system\nNow reboot your device for settings to ' | 57 'for settings to take effect' |
|
perezju
2017/07/04 08:24:00
nit: bad indent.
| |
| 47 'take effect'): | 58 with self._MockRunDeviceAdbCmd(self.adb_wrapper_serial, mock_return_value): |
| 48 self.adb.EnableVerity() | 59 self.adb_wrapper_serial.EnableVerity() |
| 49 | 60 |
| 50 def testFailEnableVerity(self): | 61 def testFailEnableVerity(self): |
| 51 with self._MockRunDeviceAdbCmd('error: closed'): | 62 mock_return_value = 'error: closed' |
| 63 with self._MockRunDeviceAdbCmd(self.adb_wrapper_serial, mock_return_value): | |
| 52 self.assertRaises( | 64 self.assertRaises( |
| 53 device_errors.AdbCommandFailedError, self.adb.EnableVerity) | 65 device_errors.AdbCommandFailedError, |
| 66 self.adb_wrapper_serial.EnableVerity) | |
| 54 | 67 |
| 55 def testFailDisableVerity(self): | 68 def testFailDisableVerity(self): |
| 56 with self._MockRunDeviceAdbCmd('error: closed'): | 69 mock_return_value = 'error: closed' |
| 70 with self._MockRunDeviceAdbCmd(self.adb_wrapper_serial, mock_return_value): | |
| 57 self.assertRaises( | 71 self.assertRaises( |
| 58 device_errors.AdbCommandFailedError, self.adb.DisableVerity) | 72 device_errors.AdbCommandFailedError, |
| 73 self.adb_wrapper_serial.DisableVerity) | |
| 59 | 74 |
| 75 def testGetStateEmpty(self): | |
| 76 mock_return_value = 'List of devices attached\n' | |
| 77 for adb in self.adb_wrappers: | |
| 78 with self._MockRunAdbCmd(mock_return_value): | |
| 79 self.assertEqual(adb.GetState(), 'offline') | |
| 80 | |
| 81 def testGetStateNoPermissions(self): | |
| 82 mock_return_value = 'List of devices attached\n' \ | |
|
perezju
2017/07/04 08:24:01
nit: break long string using parenthesis, so you d
| |
| 83 'PLACEHOLDER no permissions (verify udev ' \ | |
|
perezju
2017/07/04 08:24:00
On the real adb output the PLACEHOLDER will always
| |
| 84 'rules); see [' \ | |
| 85 'http://developer.android.com/tools/device.html] ' \ | |
| 86 'usb:1-2.3' | |
| 87 for adb in self.adb_wrappers: | |
| 88 ret = mock_return_value.replace("PLACEHOLDER", adb.GetDeviceSerial()) | |
| 89 with self._MockRunAdbCmd(ret): | |
| 90 self.assertEqual(adb.GetState(), 'no') | |
| 91 | |
| 92 def testGetStateUnauthorized(self): | |
| 93 mock_return_value = 'List of devices attached\n' \ | |
| 94 'PLACEHOLDER unauthorized usb:1-2.3' | |
| 95 for adb in self.adb_wrappers: | |
| 96 ret = mock_return_value.replace("PLACEHOLDER", adb.GetDeviceSerial()) | |
| 97 with self._MockRunAdbCmd(ret): | |
| 98 self.assertEqual(adb.GetState(), 'unauthorized') | |
| 99 | |
| 100 def testGetStateOffline(self): | |
| 101 mock_return_value = 'List of devices attached\n' \ | |
| 102 'PLACEHOLDER offline usb:1-2.3' | |
| 103 for adb in self.adb_wrappers: | |
| 104 ret = mock_return_value.replace("PLACEHOLDER", adb.GetDeviceSerial()) | |
| 105 with self._MockRunAdbCmd(ret): | |
| 106 self.assertEqual(adb.GetState(), 'offline') | |
| 107 | |
| 108 def testGetStateOnline(self): | |
| 109 mock_return_value = 'List of devices attached\n' \ | |
| 110 'PLACEHOLDER device ' \ | |
| 111 'usb:1-2.3 product:ramshead' \ | |
| 112 'model:Nexus_123 device:ramshead' | |
| 113 for adb in self.adb_wrappers: | |
| 114 ret = mock_return_value.replace("PLACEHOLDER", adb.GetDeviceSerial()) | |
| 115 with self._MockRunAdbCmd(ret): | |
| 116 self.assertEqual(adb.GetState(), 'device') | |
| 117 | |
| 118 | |
| 119 if __name__ == '__main__': | |
| 120 unittest.main() | |
| OLD | NEW |