Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: tools/chrome_remote_control/chrome_remote_control/android_browser_finder_unittest.py

Issue 10945043: [chrome_remote_control] Use monkey patching for stubs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: PyLint Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 import logging 4 import logging
5 import unittest 5 import unittest
6 6
7 from chrome_remote_control import android_browser_finder 7 from chrome_remote_control import android_browser_finder
8 from chrome_remote_control import browser_options 8 from chrome_remote_control import browser_options
9 from chrome_remote_control.system_stub import PopenStub 9 from chrome_remote_control import system_stub
10 from chrome_remote_control.system_stub import SubprocessModuleStub
11
12 # adb not even found
13 # android_browser_finder not returning
14 class ADBCommandsStub(object):
15 def __init__(self, module, device):
16 self._module = module
17 self._device = device
18 self.is_root_enabled = True
19
20 def RunShellCommand(self, args):
21 if isinstance(args, basestring):
22 import shlex
23 args = shlex.split(args)
24 handler = self._module.shell_command_handlers[args[0]]
25 return handler(args)
26
27 def IsRootEnabled(self):
28 return self.is_root_enabled
29
30 class ADBCommandsModuleStub(object):
31 def __init__(self):
32 self.attached_devices = []
33 self.shell_command_handlers = {}
34
35 def ADBCommandsStubConstructor(device=None):
36 return ADBCommandsStub(self, device)
37 self.ADBCommands = ADBCommandsStubConstructor
38
39 def IsAndroidSupported(self): # pylint: disable=R0201
40 return True
41
42 def GetAttachedDevices(self):
43 return self.attached_devices
44
45 def HasForwarder(self, adb): # pylint: disable=W0613,R0201
46 return True
47 10
48 class AndroidBrowserFinderTest(unittest.TestCase): 11 class AndroidBrowserFinderTest(unittest.TestCase):
12 def setUp(self):
13 self._stubs = system_stub.Override(android_browser_finder,
14 ['adb_commands', 'subprocess'])
15
16 def tearDown(self):
17 self._stubs.Restore()
18
49 def test_no_adb(self): 19 def test_no_adb(self):
50 options = browser_options.BrowserOptions() 20 options = browser_options.BrowserOptions()
51 21
52 subprocess_stub = SubprocessModuleStub() 22 def NoAdb(*args, **kargs): # pylint: disable=W0613
53 def NoADB(*args, **kargs): # pylint: disable=W0613
54 raise OSError('not found') 23 raise OSError('not found')
55 subprocess_stub.Popen_hook = NoADB 24 self._stubs.subprocess.Popen = NoAdb
56 browsers = android_browser_finder.FindAllAvailableBrowsers( 25 browsers = android_browser_finder.FindAllAvailableBrowsers(options)
57 options, subprocess_stub)
58 self.assertEquals(0, len(browsers)) 26 self.assertEquals(0, len(browsers))
59 27
60 def test_adb_no_devices(self): 28 def test_adb_no_devices(self):
61 options = browser_options.BrowserOptions() 29 options = browser_options.BrowserOptions()
62 30
63 subprocess_stub = SubprocessModuleStub() 31 browsers = android_browser_finder.FindAllAvailableBrowsers(options)
64 popen_stub = PopenStub(('', ''))
65 subprocess_stub.Popen_result = popen_stub
66
67 adb_commands_module_stub = ADBCommandsModuleStub()
68 browsers = android_browser_finder.FindAllAvailableBrowsers(
69 options, subprocess_stub, adb_commands_module_stub)
70 self.assertEquals(0, len(browsers)) 32 self.assertEquals(0, len(browsers))
71 33
72 34
73 def test_adb_permissions_error(self): 35 def test_adb_permissions_error(self):
74 options = browser_options.BrowserOptions() 36 options = browser_options.BrowserOptions()
75 37
76 subprocess_stub = SubprocessModuleStub() 38 self._stubs.subprocess.Popen.communicate_result = (
77 popen_stub = PopenStub((
78 """List of devices attached 39 """List of devices attached
79 ????????????\tno permissions""", 40 ????????????\tno permissions""",
80 """* daemon not running. starting it now on port 5037 * 41 """* daemon not running. starting it now on port 5037 *
81 * daemon started successfully * 42 * daemon started successfully *
82 """)) 43 """)
83 subprocess_stub.Popen_result = popen_stub
84
85 adb_commands_module_stub = ADBCommandsModuleStub()
86 44
87 warnings = [] 45 warnings = []
88 class TempFilter(logging.Filter): 46 class TempFilter(logging.Filter):
89 def filter(self, record): 47 def filter(self, record):
90 warnings.append(record) 48 warnings.append(record)
91 return 0 49 return 0
92 temp_filter = TempFilter() 50 temp_filter = TempFilter()
93 51
94 try: 52 try:
95 logger = logging.getLogger() 53 logger = logging.getLogger()
96 logger.addFilter(temp_filter) 54 logger.addFilter(temp_filter)
97 55
98 browsers = android_browser_finder.FindAllAvailableBrowsers( 56 browsers = android_browser_finder.FindAllAvailableBrowsers(options)
99 options, subprocess_stub, adb_commands_module_stub)
100 finally: 57 finally:
101 logger.removeFilter(temp_filter) 58 logger.removeFilter(temp_filter)
102 self.assertEquals(3, len(warnings)) 59 self.assertEquals(3, len(warnings))
103 self.assertEquals(0, len(browsers)) 60 self.assertEquals(0, len(browsers))
104 61
105 62
106 def test_adb_two_devices(self): 63 def test_adb_two_devices(self):
107 options = browser_options.BrowserOptions() 64 options = browser_options.BrowserOptions()
108 65
109 subprocess_stub = SubprocessModuleStub() 66 self._stubs.adb_commands.attached_devices = ['015d14fec128220c',
110 popen_stub = PopenStub(('', ''))
111 subprocess_stub.Popen_result = popen_stub
112 adb_commands_module_stub = ADBCommandsModuleStub()
113 adb_commands_module_stub.attached_devices = ['015d14fec128220c',
114 '015d14fec128220d'] 67 '015d14fec128220d']
115 68
116 warnings = [] 69 warnings = []
117 class TempFilter(logging.Filter): 70 class TempFilter(logging.Filter):
118 def filter(self, record): 71 def filter(self, record):
119 warnings.append(record) 72 warnings.append(record)
120 return 0 73 return 0
121 temp_filter = TempFilter() 74 temp_filter = TempFilter()
122 75
123 try: 76 try:
124 logger = logging.getLogger() 77 logger = logging.getLogger()
125 logger.addFilter(temp_filter) 78 logger.addFilter(temp_filter)
126 79
127 browsers = android_browser_finder.FindAllAvailableBrowsers( 80 browsers = android_browser_finder.FindAllAvailableBrowsers(options)
128 options, subprocess_stub, adb_commands_module_stub)
129 finally: 81 finally:
130 logger.removeFilter(temp_filter) 82 logger.removeFilter(temp_filter)
131 self.assertEquals(1, len(warnings)) 83 self.assertEquals(1, len(warnings))
132 self.assertEquals(0, len(browsers)) 84 self.assertEquals(0, len(browsers))
133 85
134 def test_adb_one_device(self): 86 def test_adb_one_device(self):
135 options = browser_options.BrowserOptions() 87 options = browser_options.BrowserOptions()
136 88
137 subprocess_stub = SubprocessModuleStub() 89 self._stubs.adb_commands.attached_devices = ['015d14fec128220c']
138 popen_stub = PopenStub(('', ''))
139 subprocess_stub.Popen_result = popen_stub
140 adb_commands_module_stub = ADBCommandsModuleStub()
141 adb_commands_module_stub.attached_devices = ['015d14fec128220c']
142 90
143 def OnPM(args): 91 def OnPM(args):
144 assert args[0] == 'pm' 92 assert args[0] == 'pm'
145 assert args[1] == 'list' 93 assert args[1] == 'list'
146 assert args[2] == 'packages' 94 assert args[2] == 'packages'
147 return ['package:org.chromium.content_shell', 95 return ['package:org.chromium.content_shell',
148 'package.com.google.android.setupwizard'] 96 'package.com.google.android.setupwizard']
149 97
150 adb_commands_module_stub.shell_command_handlers['pm'] = OnPM 98 self._stubs.adb_commands.shell_command_handlers['pm'] = OnPM
151 99
152 browsers = android_browser_finder.FindAllAvailableBrowsers( 100 browsers = android_browser_finder.FindAllAvailableBrowsers(options)
153 options, subprocess_stub, adb_commands_module_stub)
154 self.assertEquals(1, len(browsers)) 101 self.assertEquals(1, len(browsers))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698