1#!/usr/bin/env python 2# Copyright 2015 The Chromium Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6import argparse 7import sys 8import tempfile 9import unittest 10 11from devil import devil_env 12from devil.android import device_errors 13from devil.android import device_utils 14from devil.android.tools import script_common 15 16with devil_env.SysPath(devil_env.PYMOCK_PATH): 17 import mock # pylint: disable=import-error 18 19with devil_env.SysPath(devil_env.DEPENDENCY_MANAGER_PATH): 20 # pylint: disable=wrong-import-order 21 from dependency_manager import exceptions 22 23 24class GetDevicesTest(unittest.TestCase): 25 def testNoSpecs(self): 26 devices = [ 27 device_utils.DeviceUtils('123'), 28 device_utils.DeviceUtils('456'), 29 ] 30 with mock.patch( 31 'devil.android.device_utils.DeviceUtils.HealthyDevices', 32 return_value=devices): 33 self.assertEquals(devices, script_common.GetDevices(None, None)) 34 35 def testWithDevices(self): 36 devices = [ 37 device_utils.DeviceUtils('123'), 38 device_utils.DeviceUtils('456'), 39 ] 40 with mock.patch( 41 'devil.android.device_utils.DeviceUtils.HealthyDevices', 42 return_value=devices): 43 self.assertEquals([device_utils.DeviceUtils('456')], 44 script_common.GetDevices(['456'], None)) 45 46 def testMissingDevice(self): 47 with mock.patch( 48 'devil.android.device_utils.DeviceUtils.HealthyDevices', 49 return_value=[device_utils.DeviceUtils('123')]): 50 with self.assertRaises(device_errors.DeviceUnreachableError): 51 script_common.GetDevices(['456'], None) 52 53 def testNoDevices(self): 54 with mock.patch( 55 'devil.android.device_utils.DeviceUtils.HealthyDevices', 56 return_value=[]): 57 with self.assertRaises(device_errors.NoDevicesError): 58 script_common.GetDevices(None, None) 59 60 61class InitializeEnvironmentTest(unittest.TestCase): 62 def setUp(self): 63 # pylint: disable=protected-access 64 self.parser = argparse.ArgumentParser() 65 script_common.AddEnvironmentArguments(self.parser) 66 devil_env.config = devil_env._Environment() 67 68 def testNoAdb(self): 69 args = self.parser.parse_args([]) 70 script_common.InitializeEnvironment(args) 71 with self.assertRaises(exceptions.NoPathFoundError): 72 devil_env.config.LocalPath('adb') 73 74 def testAdb(self): 75 with tempfile.NamedTemporaryFile() as f: 76 args = self.parser.parse_args(['--adb-path=%s' % f.name]) 77 script_common.InitializeEnvironment(args) 78 self.assertEquals(f.name, devil_env.config.LocalPath('adb')) 79 80 def testNonExistentAdb(self): 81 with tempfile.NamedTemporaryFile() as f: 82 args = self.parser.parse_args(['--adb-path=%s' % f.name]) 83 script_common.InitializeEnvironment(args) 84 with self.assertRaises(exceptions.NoPathFoundError): 85 devil_env.config.LocalPath('adb') 86 87 88if __name__ == '__main__': 89 sys.exit(unittest.main()) 90