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 6 7import argparse 8import sys 9import tempfile 10import unittest 11 12from devil import devil_env 13from devil.android import device_errors 14from devil.android import device_utils 15from devil.android.tools import script_common 16 17with devil_env.SysPath(devil_env.PYMOCK_PATH): 18 import mock # pylint: disable=import-error 19 20with devil_env.SysPath(devil_env.DEPENDENCY_MANAGER_PATH): 21 from dependency_manager import exceptions 22 23 24class GetDevicesTest(unittest.TestCase): 25 26 def testNoSpecs(self): 27 devices = [ 28 device_utils.DeviceUtils('123'), 29 device_utils.DeviceUtils('456'), 30 ] 31 with mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices', 32 return_value=devices): 33 self.assertEquals( 34 devices, 35 script_common.GetDevices(None, None)) 36 37 def testWithDevices(self): 38 devices = [ 39 device_utils.DeviceUtils('123'), 40 device_utils.DeviceUtils('456'), 41 ] 42 with mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices', 43 return_value=devices): 44 self.assertEquals( 45 [device_utils.DeviceUtils('456')], 46 script_common.GetDevices(['456'], None)) 47 48 def testMissingDevice(self): 49 with mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices', 50 return_value=[device_utils.DeviceUtils('123')]): 51 with self.assertRaises(device_errors.DeviceUnreachableError): 52 script_common.GetDevices(['456'], None) 53 54 def testNoDevices(self): 55 with mock.patch('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 63 def setUp(self): 64 # pylint: disable=protected-access 65 self.parser = argparse.ArgumentParser() 66 script_common.AddEnvironmentArguments(self.parser) 67 devil_env.config = devil_env._Environment() 68 69 def testNoAdb(self): 70 args = self.parser.parse_args([]) 71 script_common.InitializeEnvironment(args) 72 with self.assertRaises(exceptions.NoPathFoundError): 73 devil_env.config.LocalPath('adb') 74 75 def testAdb(self): 76 with tempfile.NamedTemporaryFile() as f: 77 args = self.parser.parse_args(['--adb-path=%s' % f.name]) 78 script_common.InitializeEnvironment(args) 79 self.assertEquals( 80 f.name, 81 devil_env.config.LocalPath('adb')) 82 83 def testNonExistentAdb(self): 84 with tempfile.NamedTemporaryFile() as f: 85 args = self.parser.parse_args(['--adb-path=%s' % f.name]) 86 script_common.InitializeEnvironment(args) 87 with self.assertRaises(exceptions.NoPathFoundError): 88 devil_env.config.LocalPath('adb') 89 90 91if __name__ == '__main__': 92 sys.exit(unittest.main()) 93 94