xref: /aosp_15_r20/external/chromium-trace/catapult/devil/devil/devil_env_test.py (revision 1fa4b3da657c0e9ad43c0220bacf9731820715a5)
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