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

Side by Side Diff: tools/telemetry/telemetry/desktop_browser_finder_unittest.py

Issue 12278015: [Telemetry] Reorganize everything. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Re-add shebangs. Created 7 years, 10 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
(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 browser_options
7 from telemetry import desktop_browser_finder
8 from telemetry import system_stub
9
10 # This file verifies the logic for finding a browser instance on all platforms
11 # at once. It does so by providing stubs for the OS/sys/subprocess primitives
12 # that the underlying finding logic usually uses to locate a suitable browser.
13 # We prefer this approach to having to run the same test on every platform on
14 # which we want this code to work.
15
16 class FindTestBase(unittest.TestCase):
17 def setUp(self):
18 self._options = browser_options.BrowserOptions()
19 self._options.chrome_root = '../../../'
20 self._stubs = system_stub.Override(desktop_browser_finder,
21 ['os', 'subprocess', 'sys'])
22
23 def tearDown(self):
24 self._stubs.Restore()
25
26 @property
27 def _files(self):
28 return self._stubs.os.path.files
29
30 def DoFindAll(self):
31 return desktop_browser_finder.FindAllAvailableBrowsers(self._options)
32
33 def DoFindAllTypes(self):
34 browsers = self.DoFindAll()
35 return [b.browser_type for b in browsers]
36
37 def has_type(array, browser_type):
38 return len([x for x in array if x.browser_type == browser_type]) != 0
39
40 class FindSystemTest(FindTestBase):
41 def setUp(self):
42 super(FindSystemTest, self).setUp()
43 self._stubs.sys.platform = 'win32'
44
45 def testFindProgramFiles(self):
46 self._files.append(
47 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe')
48 self._stubs.os.program_files = 'C:\\Program Files'
49 self.assertTrue('system' in self.DoFindAllTypes())
50
51 def testFindProgramFilesX86(self):
52 self._files.append(
53 'C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe')
54 self._stubs.os.program_files_x86 = 'C:\\Program Files(x86)'
55 self.assertTrue('system' in self.DoFindAllTypes())
56
57 def testFindLocalAppData(self):
58 self._files.append(
59 'C:\\Local App Data\\Google\\Chrome\\Application\\chrome.exe')
60 self._stubs.os.local_app_data = 'C:\\Local App Data'
61 self.assertTrue('system' in self.DoFindAllTypes())
62
63 class FindLocalBuildsTest(FindTestBase):
64 def setUp(self):
65 super(FindLocalBuildsTest, self).setUp()
66 self._stubs.sys.platform = 'win32'
67
68 def testFindBuild(self):
69 self._files.append('..\\..\\..\\build\\Release\\chrome.exe')
70 self.assertTrue('release' in self.DoFindAllTypes())
71
72 def testFindOut(self):
73 self._files.append('..\\..\\..\\out\\Release\\chrome.exe')
74 self.assertTrue('release' in self.DoFindAllTypes())
75
76 def testFindSconsbuild(self):
77 self._files.append('..\\..\\..\\sconsbuild\\Release\\chrome.exe')
78 self.assertTrue('release' in self.DoFindAllTypes())
79
80 def testFindXcodebuild(self):
81 self._files.append('..\\..\\..\\xcodebuild\\Release\\chrome.exe')
82 self.assertTrue('release' in self.DoFindAllTypes())
83
84 class OSXFindTest(FindTestBase):
85 def setUp(self):
86 super(OSXFindTest, self).setUp()
87 self._stubs.sys.platform = 'darwin'
88 self._files.append('/Applications/Google Chrome Canary.app/'
89 'Contents/MacOS/Google Chrome Canary')
90 self._files.append('/Applications/Google Chrome.app/' +
91 'Contents/MacOS/Google Chrome')
92 self._files.append(
93 '../../../out/Release/Chromium.app/Contents/MacOS/Chromium')
94 self._files.append(
95 '../../../out/Debug/Chromium.app/Contents/MacOS/Chromium')
96 self._files.append(
97 '../../../out/Release/Content Shell.app/Contents/MacOS/Content Shell')
98 self._files.append(
99 '../../../out/Debug/Content Shell.app/Contents/MacOS/Content Shell')
100
101 def testFindAll(self):
102 types = self.DoFindAllTypes()
103 self.assertEquals(
104 set(types),
105 set(['debug', 'release',
106 'content-shell-debug', 'content-shell-release',
107 'canary', 'system']))
108
109
110 class LinuxFindTest(FindTestBase):
111 def setUp(self):
112 super(LinuxFindTest, self).setUp()
113
114 self._stubs.sys.platform = 'linux2'
115 self._files.append('/foo/chrome')
116 self._files.append('../../../out/Release/chrome')
117 self._files.append('../../../out/Debug/chrome')
118 self._files.append('../../../out/Release/content_shell')
119 self._files.append('../../../out/Debug/content_shell')
120
121 self.has_google_chrome_on_path = False
122 this = self
123 def call_hook(*args, **kwargs): # pylint: disable=W0613
124 if this.has_google_chrome_on_path:
125 return 0
126 raise OSError('Not found')
127 self._stubs.subprocess.call = call_hook
128
129 def testFindAllWithExact(self):
130 types = self.DoFindAllTypes()
131 self.assertEquals(
132 set(types),
133 set(['debug', 'release',
134 'content-shell-debug', 'content-shell-release']))
135
136 def testFindWithProvidedExecutable(self):
137 self._options.browser_executable = '/foo/chrome'
138 self.assertTrue('exact' in self.DoFindAllTypes())
139
140 def testFindUsingDefaults(self):
141 self.has_google_chrome_on_path = True
142 self.assertTrue('release' in self.DoFindAllTypes())
143
144 del self._files[1]
145 self.has_google_chrome_on_path = True
146 self.assertTrue('system' in self.DoFindAllTypes())
147
148 self.has_google_chrome_on_path = False
149 del self._files[1]
150 self.assertEquals(['content-shell-debug', 'content-shell-release'],
151 self.DoFindAllTypes())
152
153 def testFindUsingRelease(self):
154 self.assertTrue('release' in self.DoFindAllTypes())
155
156
157 class WinFindTest(FindTestBase):
158 def setUp(self):
159 super(WinFindTest, self).setUp()
160
161 self._stubs.sys.platform = 'win32'
162 self._stubs.os.local_app_data = 'c:\\Users\\Someone\\AppData\\Local'
163 self._files.append('c:\\tmp\\chrome.exe')
164 self._files.append('..\\..\\..\\build\\Release\\chrome.exe')
165 self._files.append('..\\..\\..\\build\\Debug\\chrome.exe')
166 self._files.append('..\\..\\..\\build\\Release\\content_shell.exe')
167 self._files.append('..\\..\\..\\build\\Debug\\content_shell.exe')
168 self._files.append(self._stubs.os.local_app_data + '\\' +
169 'Google\\Chrome\\Application\\chrome.exe')
170 self._files.append(self._stubs.os.local_app_data + '\\' +
171 'Google\\Chrome SxS\\Application\\chrome.exe')
172
173 def testFindAllGivenDefaults(self):
174 types = self.DoFindAllTypes()
175 self.assertEquals(set(types),
176 set(['debug', 'release',
177 'content-shell-debug', 'content-shell-release',
178 'system', 'canary']))
179
180 def testFindAllWithExact(self):
181 self._options.browser_executable = 'c:\\tmp\\chrome.exe'
182 types = self.DoFindAllTypes()
183 self.assertEquals(
184 set(types),
185 set(['exact',
186 'debug', 'release',
187 'content-shell-debug', 'content-shell-release',
188 'system', 'canary']))
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/desktop_browser_finder.py ('k') | tools/telemetry/telemetry/discover.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698