OLD | NEW |
| (Empty) |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 import unittest | |
5 | |
6 from telemetry import android_browser_finder | |
7 from telemetry import browser_options | |
8 from telemetry import system_stub | |
9 | |
10 class LoggingStub(object): | |
11 def __init__(self): | |
12 self.warnings = [] | |
13 | |
14 def info(self, msg, *args): | |
15 pass | |
16 | |
17 def warn(self, msg, *args): | |
18 self.warnings.append(msg % args) | |
19 | |
20 class AndroidBrowserFinderTest(unittest.TestCase): | |
21 def setUp(self): | |
22 self._stubs = system_stub.Override(android_browser_finder, | |
23 ['adb_commands', 'subprocess']) | |
24 | |
25 def tearDown(self): | |
26 self._stubs.Restore() | |
27 | |
28 def test_no_adb(self): | |
29 options = browser_options.BrowserOptions() | |
30 | |
31 def NoAdb(*args, **kargs): # pylint: disable=W0613 | |
32 raise OSError('not found') | |
33 self._stubs.subprocess.Popen = NoAdb | |
34 browsers = android_browser_finder.FindAllAvailableBrowsers(options) | |
35 self.assertEquals(0, len(browsers)) | |
36 | |
37 def test_adb_no_devices(self): | |
38 options = browser_options.BrowserOptions() | |
39 | |
40 browsers = android_browser_finder.FindAllAvailableBrowsers(options) | |
41 self.assertEquals(0, len(browsers)) | |
42 | |
43 | |
44 def test_adb_permissions_error(self): | |
45 options = browser_options.BrowserOptions() | |
46 | |
47 self._stubs.subprocess.Popen.communicate_result = ( | |
48 """List of devices attached | |
49 ????????????\tno permissions""", | |
50 """* daemon not running. starting it now on port 5037 * | |
51 * daemon started successfully * | |
52 """) | |
53 | |
54 log_stub = LoggingStub() | |
55 browsers = android_browser_finder.FindAllAvailableBrowsers( | |
56 options, log_stub) | |
57 self.assertEquals(3, len(log_stub.warnings)) | |
58 self.assertEquals(0, len(browsers)) | |
59 | |
60 | |
61 def test_adb_two_devices(self): | |
62 options = browser_options.BrowserOptions() | |
63 | |
64 self._stubs.adb_commands.attached_devices = ['015d14fec128220c', | |
65 '015d14fec128220d'] | |
66 | |
67 log_stub = LoggingStub() | |
68 browsers = android_browser_finder.FindAllAvailableBrowsers( | |
69 options, log_stub) | |
70 self.assertEquals(1, len(log_stub.warnings)) | |
71 self.assertEquals(0, len(browsers)) | |
72 | |
73 def test_adb_one_device(self): | |
74 options = browser_options.BrowserOptions() | |
75 | |
76 self._stubs.adb_commands.attached_devices = ['015d14fec128220c'] | |
77 | |
78 def OnPM(args): | |
79 assert args[0] == 'pm' | |
80 assert args[1] == 'list' | |
81 assert args[2] == 'packages' | |
82 return ['package:org.chromium.content_shell_apk', | |
83 'package.com.google.android.setupwizard'] | |
84 | |
85 self._stubs.adb_commands.shell_command_handlers['pm'] = OnPM | |
86 | |
87 browsers = android_browser_finder.FindAllAvailableBrowsers(options) | |
88 self.assertEquals(1, len(browsers)) | |
OLD | NEW |