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

Side by Side Diff: tests/bot_update_coverage_test.py

Issue 2492963002: bot_update: Use 'gclient' from same repository. (Closed)
Patch Set: Also don't ignore move errors in git cache. Created 4 years, 1 month 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
« no previous file with comments | « recipe_modules/bot_update/resources/bot_update.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2015 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import codecs 6 import codecs
7 import copy 7 import copy
8 import json 8 import json
9 import os 9 import os
10 import sys 10 import sys
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 def fake_git(*args, **kwargs): 160 def fake_git(*args, **kwargs):
161 return bot_update.call('git', *args, **kwargs) 161 return bot_update.call('git', *args, **kwargs)
162 162
163 163
164 class BotUpdateUnittests(unittest.TestCase): 164 class BotUpdateUnittests(unittest.TestCase):
165 def setUp(self): 165 def setUp(self):
166 sys.platform = 'linux2' # For consistency, ya know? 166 sys.platform = 'linux2' # For consistency, ya know?
167 self.filesystem = FakeFilesystem() 167 self.filesystem = FakeFilesystem()
168 self.call = MockedCall(self.filesystem) 168 self.call = MockedCall(self.filesystem)
169 self.gclient = MockedGclientSync(self.filesystem) 169 self.gclient = MockedGclientSync(self.filesystem)
170 self.call.expect(('gclient', 'sync')).returns(self.gclient) 170 self.call.expect(
171 (sys.executable, '-u', bot_update.GCLIENT_PATH, 'sync')
172 ).returns(self.gclient)
171 self.old_call = getattr(bot_update, 'call') 173 self.old_call = getattr(bot_update, 'call')
172 self.params = copy.deepcopy(DEFAULT_PARAMS) 174 self.params = copy.deepcopy(DEFAULT_PARAMS)
173 setattr(bot_update, 'call', self.call) 175 setattr(bot_update, 'call', self.call)
174 setattr(bot_update, 'git', fake_git) 176 setattr(bot_update, 'git', fake_git)
175 177
176 self.old_os_cwd = os.getcwd 178 self.old_os_cwd = os.getcwd
177 setattr(os, 'getcwd', lambda: '/b/build/slave/foo/build') 179 setattr(os, 'getcwd', lambda: '/b/build/slave/foo/build')
178 180
179 setattr(bot_update, 'open', self.filesystem.open) 181 setattr(bot_update, 'open', self.filesystem.open)
180 self.old_codecs_open = codecs.open 182 self.old_codecs_open = codecs.open
181 setattr(codecs, 'open', self.filesystem.open) 183 setattr(codecs, 'open', self.filesystem.open)
182 184
183 def tearDown(self): 185 def tearDown(self):
184 setattr(bot_update, 'call', self.old_call) 186 setattr(bot_update, 'call', self.old_call)
185 setattr(os, 'getcwd', self.old_os_cwd) 187 setattr(os, 'getcwd', self.old_os_cwd)
186 delattr(bot_update, 'open') 188 delattr(bot_update, 'open')
187 setattr(codecs, 'open', self.old_codecs_open) 189 setattr(codecs, 'open', self.old_codecs_open)
188 190
189 def overrideSetupForWindows(self): 191 def overrideSetupForWindows(self):
190 sys.platform = 'win' 192 sys.platform = 'win'
191 self.call.expect(('gclient.bat', 'sync')).returns(self.gclient) 193 self.call.expect(
194 (sys.executable, '-u', bot_update.GCLIENT_PATH, 'sync')
195 ).returns(self.gclient)
192 196
193 def testBasic(self): 197 def testBasic(self):
194 bot_update.ensure_checkout(**self.params) 198 bot_update.ensure_checkout(**self.params)
195 return self.call.records 199 return self.call.records
196 200
197 def testBasicShallow(self): 201 def testBasicShallow(self):
198 self.params['shallow'] = True 202 self.params['shallow'] = True
199 bot_update.ensure_checkout(**self.params) 203 bot_update.ensure_checkout(**self.params)
200 return self.call.records 204 return self.call.records
201 205
202 def testBreakLocks(self): 206 def testBreakLocks(self):
203 self.overrideSetupForWindows() 207 self.overrideSetupForWindows()
204 bot_update.ensure_checkout(**self.params) 208 bot_update.ensure_checkout(**self.params)
205 gclient_sync_cmd = None 209 gclient_sync_cmd = None
206 for record in self.call.records: 210 for record in self.call.records:
207 args = record[0] 211 args = record[0]
208 if args[0] == 'gclient.bat' and args[1] == 'sync': 212 if args[:4] == (sys.executable, '-u', bot_update.GCLIENT_PATH, 'sync'):
209 gclient_sync_cmd = args 213 gclient_sync_cmd = args
210 self.assertTrue('--break_repo_locks' in gclient_sync_cmd) 214 self.assertTrue('--break_repo_locks' in gclient_sync_cmd)
211 215
212 def testGitCheckoutBreaksLocks(self): 216 def testGitCheckoutBreaksLocks(self):
213 self.overrideSetupForWindows() 217 self.overrideSetupForWindows()
214 path = '/b/build/slave/foo/build/.git' 218 path = '/b/build/slave/foo/build/.git'
215 lockfile = 'index.lock' 219 lockfile = 'index.lock'
216 removed = [] 220 removed = []
217 old_os_walk = os.walk 221 old_os_walk = os.walk
218 old_os_remove = os.remove 222 old_os_remove = os.remove
219 setattr(os, 'walk', lambda _: [(path, None, [lockfile])]) 223 setattr(os, 'walk', lambda _: [(path, None, [lockfile])])
220 setattr(os, 'remove', removed.append) 224 setattr(os, 'remove', removed.append)
221 bot_update.ensure_checkout(**self.params) 225 bot_update.ensure_checkout(**self.params)
222 setattr(os, 'walk', old_os_walk) 226 setattr(os, 'walk', old_os_walk)
223 setattr(os, 'remove', old_os_remove) 227 setattr(os, 'remove', old_os_remove)
224 self.assertTrue(os.path.join(path, lockfile) in removed) 228 self.assertTrue(os.path.join(path, lockfile) in removed)
225 229
226 230
227 if __name__ == '__main__': 231 if __name__ == '__main__':
228 unittest.main() 232 unittest.main()
OLDNEW
« no previous file with comments | « recipe_modules/bot_update/resources/bot_update.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698