xref: /aosp_15_r20/external/chromium-trace/catapult/devil/devil/android/tools/script_common_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
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