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 |