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