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# pylint: disable=protected-access 7 8import logging 9import sys 10import unittest 11 12from devil import devil_env 13from devil.android.ndk import abis 14 15_sys_path_before = list(sys.path) 16with devil_env.SysPath(devil_env.PYMOCK_PATH): 17 _sys_path_with_pymock = list(sys.path) 18 import mock # pylint: disable=import-error 19_sys_path_after = list(sys.path) 20 21 22class _MockDeviceUtils(object): 23 def __init__(self): 24 self.product_cpu_abi = abis.ARM_64 25 26 27class DevilEnvTest(unittest.TestCase): 28 def testSysPath(self): 29 self.assertEquals(_sys_path_before, _sys_path_after) 30 self.assertEquals(_sys_path_before + [devil_env.PYMOCK_PATH], 31 _sys_path_with_pymock) 32 33 def testGetEnvironmentVariableConfig_configType(self): 34 with mock.patch('os.environ.get', 35 mock.Mock(side_effect=lambda _env_var: None)): 36 env_config = devil_env._GetEnvironmentVariableConfig() 37 self.assertEquals('BaseConfig', env_config.get('config_type')) 38 39 def testGetEnvironmentVariableConfig_noEnv(self): 40 with mock.patch('os.environ.get', 41 mock.Mock(side_effect=lambda _env_var: None)): 42 env_config = devil_env._GetEnvironmentVariableConfig() 43 self.assertEquals({}, env_config.get('dependencies')) 44 45 def testGetEnvironmentVariableConfig_adbPath(self): 46 def mock_environment(env_var): 47 return '/my/fake/adb/path' if env_var == 'ADB_PATH' else None 48 49 with mock.patch('os.environ.get', mock.Mock(side_effect=mock_environment)): 50 env_config = devil_env._GetEnvironmentVariableConfig() 51 self.assertEquals({ 52 'adb': { 53 'file_info': { 54 'linux2_x86_64': { 55 'local_paths': ['/my/fake/adb/path'], 56 }, 57 }, 58 }, 59 }, env_config.get('dependencies')) 60 61 def testGetPlatform(self): 62 with mock.patch('platform.machine', mock.Mock(return_value='x86_64')): 63 with mock.patch('sys.platform', mock.Mock(return_value='linux2')): 64 platform = devil_env.GetPlatform() 65 self.assertEquals(platform, 'linux2_x86_64') 66 with mock.patch('sys.platform', mock.Mock(return_value='linux')): 67 platform = devil_env.GetPlatform() 68 self.assertEquals(platform, 'linux2_x86_64') 69 70 platform = devil_env.GetPlatform(arch='arm64-v8a') 71 self.assertEquals(platform, 'android_arm64-v8a') 72 73 device = _MockDeviceUtils() 74 platform = devil_env.GetPlatform(device=device) 75 self.assertEquals(platform, 'android_arm64-v8a') 76 77if __name__ == '__main__': 78 logging.getLogger().setLevel(logging.DEBUG) 79 unittest.main(verbosity=2) 80