xref: /aosp_15_r20/development/python-packages/adb/tests/test_adb.py (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
1*90c8c64dSAndroid Build Coastguard Worker#
2*90c8c64dSAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project
3*90c8c64dSAndroid Build Coastguard Worker#
4*90c8c64dSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*90c8c64dSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*90c8c64dSAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*90c8c64dSAndroid Build Coastguard Worker#
8*90c8c64dSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*90c8c64dSAndroid Build Coastguard Worker#
10*90c8c64dSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*90c8c64dSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*90c8c64dSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*90c8c64dSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*90c8c64dSAndroid Build Coastguard Worker# limitations under the License.
15*90c8c64dSAndroid Build Coastguard Worker#
16*90c8c64dSAndroid Build Coastguard Workerimport os
17*90c8c64dSAndroid Build Coastguard Workerimport unittest
18*90c8c64dSAndroid Build Coastguard Workerfrom unittest.mock import Mock, patch
19*90c8c64dSAndroid Build Coastguard Worker
20*90c8c64dSAndroid Build Coastguard Workerimport adb
21*90c8c64dSAndroid Build Coastguard Worker
22*90c8c64dSAndroid Build Coastguard Workerclass GetDeviceTest(unittest.TestCase):
23*90c8c64dSAndroid Build Coastguard Worker    def setUp(self) -> None:
24*90c8c64dSAndroid Build Coastguard Worker        self.android_serial = os.getenv('ANDROID_SERIAL')
25*90c8c64dSAndroid Build Coastguard Worker        if 'ANDROID_SERIAL' in os.environ:
26*90c8c64dSAndroid Build Coastguard Worker            del os.environ['ANDROID_SERIAL']
27*90c8c64dSAndroid Build Coastguard Worker
28*90c8c64dSAndroid Build Coastguard Worker    def tearDown(self) -> None:
29*90c8c64dSAndroid Build Coastguard Worker        if self.android_serial is not None:
30*90c8c64dSAndroid Build Coastguard Worker            os.environ['ANDROID_SERIAL'] = self.android_serial
31*90c8c64dSAndroid Build Coastguard Worker        else:
32*90c8c64dSAndroid Build Coastguard Worker            if 'ANDROID_SERIAL' in os.environ:
33*90c8c64dSAndroid Build Coastguard Worker                del os.environ['ANDROID_SERIAL']
34*90c8c64dSAndroid Build Coastguard Worker
35*90c8c64dSAndroid Build Coastguard Worker    @patch('adb.get_devices')
36*90c8c64dSAndroid Build Coastguard Worker    def test_explicit(self, mock_get_devices: Mock) -> None:
37*90c8c64dSAndroid Build Coastguard Worker        mock_get_devices.return_value = ['foo', 'bar']
38*90c8c64dSAndroid Build Coastguard Worker        device = adb.get_device('foo')
39*90c8c64dSAndroid Build Coastguard Worker        self.assertEqual(device.serial, 'foo')
40*90c8c64dSAndroid Build Coastguard Worker
41*90c8c64dSAndroid Build Coastguard Worker    @patch('adb.get_devices')
42*90c8c64dSAndroid Build Coastguard Worker    def test_from_env(self, mock_get_devices: Mock) -> None:
43*90c8c64dSAndroid Build Coastguard Worker        mock_get_devices.return_value = ['foo', 'bar']
44*90c8c64dSAndroid Build Coastguard Worker        os.environ['ANDROID_SERIAL'] = 'foo'
45*90c8c64dSAndroid Build Coastguard Worker        device = adb.get_device()
46*90c8c64dSAndroid Build Coastguard Worker        self.assertEqual(device.serial, 'foo')
47*90c8c64dSAndroid Build Coastguard Worker
48*90c8c64dSAndroid Build Coastguard Worker    @patch('adb.get_devices')
49*90c8c64dSAndroid Build Coastguard Worker    def test_arg_beats_env(self, mock_get_devices: Mock) -> None:
50*90c8c64dSAndroid Build Coastguard Worker        mock_get_devices.return_value = ['foo', 'bar']
51*90c8c64dSAndroid Build Coastguard Worker        os.environ['ANDROID_SERIAL'] = 'bar'
52*90c8c64dSAndroid Build Coastguard Worker        device = adb.get_device('foo')
53*90c8c64dSAndroid Build Coastguard Worker        self.assertEqual(device.serial, 'foo')
54*90c8c64dSAndroid Build Coastguard Worker
55*90c8c64dSAndroid Build Coastguard Worker    @patch('adb.get_devices')
56*90c8c64dSAndroid Build Coastguard Worker    def test_no_such_device(self, mock_get_devices: Mock) -> None:
57*90c8c64dSAndroid Build Coastguard Worker        mock_get_devices.return_value = ['foo', 'bar']
58*90c8c64dSAndroid Build Coastguard Worker        self.assertRaises(adb.DeviceNotFoundError, adb.get_device, ['baz'])
59*90c8c64dSAndroid Build Coastguard Worker
60*90c8c64dSAndroid Build Coastguard Worker        os.environ['ANDROID_SERIAL'] = 'baz'
61*90c8c64dSAndroid Build Coastguard Worker        self.assertRaises(adb.DeviceNotFoundError, adb.get_device)
62*90c8c64dSAndroid Build Coastguard Worker
63*90c8c64dSAndroid Build Coastguard Worker    @patch('adb.get_devices')
64*90c8c64dSAndroid Build Coastguard Worker    def test_unique_device(self, mock_get_devices: Mock) -> None:
65*90c8c64dSAndroid Build Coastguard Worker        mock_get_devices.return_value = ['foo']
66*90c8c64dSAndroid Build Coastguard Worker        device = adb.get_device()
67*90c8c64dSAndroid Build Coastguard Worker        self.assertEqual(device.serial, 'foo')
68*90c8c64dSAndroid Build Coastguard Worker
69*90c8c64dSAndroid Build Coastguard Worker    @patch('adb.get_devices')
70*90c8c64dSAndroid Build Coastguard Worker    def test_no_unique_device(self, mock_get_devices: Mock) -> None:
71*90c8c64dSAndroid Build Coastguard Worker        mock_get_devices.return_value = ['foo', 'bar']
72*90c8c64dSAndroid Build Coastguard Worker        self.assertRaises(adb.NoUniqueDeviceError, adb.get_device)
73*90c8c64dSAndroid Build Coastguard Worker
74*90c8c64dSAndroid Build Coastguard Worker
75*90c8c64dSAndroid Build Coastguard Workerdef main() -> None:
76*90c8c64dSAndroid Build Coastguard Worker    suite = unittest.TestLoader().loadTestsFromName(__name__)
77*90c8c64dSAndroid Build Coastguard Worker    unittest.TextTestRunner(verbosity=3).run(suite)
78*90c8c64dSAndroid Build Coastguard Worker
79*90c8c64dSAndroid Build Coastguard Workerif __name__ == '__main__':
80*90c8c64dSAndroid Build Coastguard Worker    main()
81