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

Side by Side Diff: tests/gclient_smoketest.py

Issue 2285002: Revert "Reapply 48271 with fix." (Closed)
Patch Set: Created 10 years, 7 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
« no previous file with comments | « tests/fake_repos.py ('k') | tests/gclient_test.py » ('j') | 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/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 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 """Smoke tests for gclient.py. 6 """Smoke tests for gclient.py.
7 7
8 Shell out 'gclient' and run basic conformance tests. 8 Shell out 'gclient' and run basic conformance tests.
9 9
10 This test assumes GClientSmokeBase.URL_BASE is valid. 10 This test assumes GClientSmokeBase.URL_BASE is valid.
11 """ 11 """
12 12
13 import logging 13 import logging
14 import os 14 import os
15 import pprint 15 import pprint
16 import re
17 import shutil 16 import shutil
18 import subprocess 17 import subprocess
19 import sys 18 import sys
20 import unittest 19 import unittest
21 20
22 from fake_repos import rmtree, write, FakeRepos 21 from fake_repos import rmtree, write, FakeRepos
23 22
24 join = os.path.join 23 join = os.path.join
25 24
26 SHOULD_LEAK = False 25 SHOULD_LEAK = False
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 99
101 def gclient(self, cmd, cwd=None): 100 def gclient(self, cmd, cwd=None):
102 if not cwd: 101 if not cwd:
103 cwd = self.root_dir 102 cwd = self.root_dir
104 process = subprocess.Popen([GCLIENT_PATH] + cmd, cwd=cwd, env=self.env, 103 process = subprocess.Popen([GCLIENT_PATH] + cmd, cwd=cwd, env=self.env,
105 stdout=subprocess.PIPE, stderr=subprocess.PIPE, 104 stdout=subprocess.PIPE, stderr=subprocess.PIPE,
106 shell=sys.platform.startswith('win')) 105 shell=sys.platform.startswith('win'))
107 (stdout, stderr) = process.communicate() 106 (stdout, stderr) = process.communicate()
108 return (stdout, stderr, process.returncode) 107 return (stdout, stderr, process.returncode)
109 108
110 def checkString(self, expected, result):
111 if expected != result:
112 # Strip the begining
113 while expected and result and expected[0] == result[0]:
114 expected = expected[1:]
115 result = result[1:]
116 # The exception trace makes it hard to read so dump it too.
117 if '\n' in result:
118 print result
119 self.assertEquals(expected, result)
120
121 def check(self, expected, results): 109 def check(self, expected, results):
122 self.checkString(expected[0], results[0]) 110 def checkString(expected, result):
123 self.checkString(expected[1], results[1]) 111 if expected != result:
112 while expected and result and expected[0] == result[0]:
113 expected = expected[1:]
114 result = result[1:]
115 self.assertEquals(expected, result)
116 checkString(expected[0], results[0])
117 checkString(expected[1], results[1])
124 self.assertEquals(expected[2], results[2]) 118 self.assertEquals(expected[2], results[2])
125 119
126 def assertTree(self, tree): 120 def assertTree(self, tree):
127 actual = read_tree(self.root_dir) 121 actual = read_tree(self.root_dir)
128 diff = dict_diff(tree, actual) 122 diff = dict_diff(tree, actual)
129 if diff: 123 if diff:
130 logging.debug('Actual %s\n%s' % (self.root_dir, pprint.pformat(actual))) 124 logging.debug('Actual %s\n%s' % (self.root_dir, pprint.pformat(actual)))
131 logging.debug('Expected\n%s' % pprint.pformat(tree)) 125 logging.debug('Expected\n%s' % pprint.pformat(tree))
132 logging.debug('Diff\n%s' % pprint.pformat(diff)) 126 logging.debug('Diff\n%s' % pprint.pformat(diff))
133 self.assertEquals(tree, actual) 127 self.assertEquals(tree, actual)
134 128
135 129
136 class GClientSmoke(GClientSmokeBase): 130 class GClientSmoke(GClientSmokeBase):
137 def testCommands(self): 131 def testCommands(self):
138 """This test is to make sure no new command was added.""" 132 """This test is to make sure no new command was added."""
139 result = self.gclient(['help']) 133 result = self.gclient(['help'])
140 self.assertEquals(1197, len(result[0])) 134 self.assertEquals(3189, len(result[0]))
141 self.assertEquals(0, len(result[1])) 135 self.assertEquals(0, len(result[1]))
142 self.assertEquals(0, result[2]) 136 self.assertEquals(0, result[2])
143 137
144 def testNotConfigured(self): 138 def testNotConfigured(self):
145 res = ('', 'Error: client not configured; see \'gclient config\'\n', 1) 139 res = ('', 'Error: client not configured; see \'gclient config\'\n', 1)
146 self.check(res, self.gclient(['cleanup'])) 140 self.check(res, self.gclient(['cleanup']))
147 self.check(res, self.gclient(['diff'])) 141 self.check(res, self.gclient(['diff']))
148 self.check(res, self.gclient(['export', 'foo'])) 142 self.check(res, self.gclient(['export', 'foo']))
149 self.check(res, self.gclient(['pack'])) 143 self.check(res, self.gclient(['pack']))
150 self.check(res, self.gclient(['revert'])) 144 self.check(res, self.gclient(['revert']))
151 self.check(res, self.gclient(['revinfo'])) 145 self.check(res, self.gclient(['revinfo']))
152 self.check(res, self.gclient(['runhooks'])) 146 self.check(res, self.gclient(['runhooks']))
153 self.check(res, self.gclient(['status'])) 147 self.check(res, self.gclient(['status']))
154 self.check(res, self.gclient(['sync'])) 148 self.check(res, self.gclient(['sync']))
155 self.check(res, self.gclient(['update'])) 149 self.check(res, self.gclient(['update']))
156 150
157 151
158 class GClientSmokeSVN(GClientSmokeBase): 152 class GClientSmokeSVN(GClientSmokeBase):
159 """sync is the most important command. Hence test it more.""" 153 """sync is the most important command. Hence test it more."""
160 def testSync(self): 154 def testSync(self):
155 """Test pure gclient svn checkout, example of Chromium checkout"""
161 self.gclient(['config', self.svn_base + 'trunk/src/']) 156 self.gclient(['config', self.svn_base + 'trunk/src/'])
162 # Test unversioned checkout. 157 # Test unversioned checkout.
163 results = self.gclient(['sync', '--deps', 'mac']) 158 results = self.gclient(['sync', '--deps', 'mac'])
164 logging.debug(results[0]) 159 logging.debug(results[0])
165 out = results[0].splitlines(False) 160 self.assertEquals('', results[1])
166 self.assertEquals(17, len(out))
167 self.checkString('', results[1])
168 self.assertEquals(0, results[2]) 161 self.assertEquals(0, results[2])
169 tree = mangle_svn_tree( 162 tree = mangle_svn_tree(
170 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]), 163 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]),
171 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'), 164 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'),
172 FAKE.svn_revs[1]), 165 FAKE.svn_revs[1]),
173 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]), 166 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
174 ) 167 )
175 tree[join('src', 'hooked1')] = 'hooked1'
176 self.assertTree(tree) 168 self.assertTree(tree)
177 169
178 # Manually remove hooked1 before synching to make sure it's not recreated.
179 os.remove(join(self.root_dir, 'src', 'hooked1'))
180
181 # Test incremental versioned sync: sync backward. 170 # Test incremental versioned sync: sync backward.
182 results = self.gclient(['sync', '--revision', 'src@1', '--deps', 'mac', 171 results = self.gclient(['sync', '--revision', 'src@1', '--deps', 'mac',
183 '--delete_unversioned_trees']) 172 '--delete_unversioned_trees'])
184 logging.debug(results[0]) 173 logging.debug(results[0])
185 out = results[0].splitlines(False) 174 self.assertEquals('', results[1])
186 self.assertEquals(19, len(out))
187 self.checkString('', results[1])
188 self.assertEquals(0, results[2]) 175 self.assertEquals(0, results[2])
189 tree = mangle_svn_tree( 176 tree = mangle_svn_tree(
190 (join('trunk', 'src'), 'src', FAKE.svn_revs[1]), 177 (join('trunk', 'src'), 'src', FAKE.svn_revs[1]),
191 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'), 178 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'),
192 FAKE.svn_revs[2]), 179 FAKE.svn_revs[2]),
193 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]), 180 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
194 (join('trunk', 'third_party', 'foo'), 181 (join('trunk', 'third_party', 'foo'),
195 join('src', 'third_party', 'prout'), 182 join('src', 'third_party', 'prout'),
196 FAKE.svn_revs[2]), 183 FAKE.svn_revs[2]),
197 ) 184 )
198 self.assertTree(tree) 185 self.assertTree(tree)
199 # Test incremental sync: delete-unversioned_trees isn't there. 186 # Test incremental sync: delete-unversioned_trees isn't there.
200 results = self.gclient(['sync', '--deps', 'mac']) 187 results = self.gclient(['sync', '--deps', 'mac'])
201 logging.debug(results[0]) 188 logging.debug(results[0])
202 out = results[0].splitlines(False) 189 self.assertEquals('', results[1])
203 self.assertEquals(21, len(out))
204 self.checkString('', results[1])
205 self.assertEquals(0, results[2]) 190 self.assertEquals(0, results[2])
206 tree = mangle_svn_tree( 191 tree = mangle_svn_tree(
207 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]), 192 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]),
208 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'), 193 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'),
209 FAKE.svn_revs[2]), 194 FAKE.svn_revs[2]),
210 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'), 195 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'),
211 FAKE.svn_revs[1]), 196 FAKE.svn_revs[1]),
212 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]), 197 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
213 (join('trunk', 'third_party', 'foo'), 198 (join('trunk', 'third_party', 'foo'),
214 join('src', 'third_party', 'prout'), 199 join('src', 'third_party', 'prout'),
215 FAKE.svn_revs[2]), 200 FAKE.svn_revs[2]),
216 ) 201 )
217 tree[join('src', 'hooked1')] = 'hooked1'
218 self.assertTree(tree) 202 self.assertTree(tree)
219 203
220 def testRevertAndStatus(self): 204 def testRevertAndStatus(self):
221 self.gclient(['config', self.svn_base + 'trunk/src/']) 205 self.gclient(['config', self.svn_base + 'trunk/src/'])
222 # Tested in testSync. 206 results = self.gclient(['sync', '--deps', 'mac'])
223 self.gclient(['sync', '--deps', 'mac'])
224 write(join(self.root_dir, 'src', 'third_party', 'foo', 'hi'), 'Hey!') 207 write(join(self.root_dir, 'src', 'third_party', 'foo', 'hi'), 'Hey!')
225 208
226 results = self.gclient(['status']) 209 results = self.gclient(['status'])
227 out = results[0].splitlines(False) 210 out = results[0].splitlines(False)
211 self.assertEquals(7, len(out))
228 self.assertEquals(out[0], '') 212 self.assertEquals(out[0], '')
229 self.assertTrue(out[1].startswith('________ running \'svn status\' in \'')) 213 self.assertTrue(out[1].startswith('________ running \'svn status\' in \''))
230 self.assertEquals(out[2], '? other') 214 self.assertEquals(out[2], '? other')
231 self.assertEquals(out[3], '? hooked1') 215 self.assertEquals(out[3], '? third_party/foo')
232 self.assertEquals(out[4], '? third_party/foo') 216 self.assertEquals(out[4], '')
233 self.assertEquals(out[5], '') 217 self.assertTrue(out[5].startswith('________ running \'svn status\' in \''))
234 self.assertTrue(out[6].startswith('________ running \'svn status\' in \'')) 218 self.assertEquals(out[6], '? hi')
235 self.assertEquals(out[7], '? hi')
236 self.assertEquals(8, len(out))
237 self.assertEquals('', results[1]) 219 self.assertEquals('', results[1])
238 self.assertEquals(0, results[2]) 220 self.assertEquals(0, results[2])
239 221
240 # Revert implies --force implies running hooks without looking at pattern
241 # matching.
242 results = self.gclient(['revert']) 222 results = self.gclient(['revert'])
243 out = results[0].splitlines(False) 223 self.assertEquals('', results[1])
244 self.assertEquals(22, len(out))
245 self.checkString('', results[1])
246 self.assertEquals(0, results[2]) 224 self.assertEquals(0, results[2])
247 tree = mangle_svn_tree( 225 tree = mangle_svn_tree(
248 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]), 226 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]),
249 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'), 227 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'),
250 FAKE.svn_revs[1]), 228 FAKE.svn_revs[1]),
251 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]), 229 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
252 ) 230 )
253 tree[join('src', 'hooked1')] = 'hooked1'
254 tree[join('src', 'hooked2')] = 'hooked2'
255 self.assertTree(tree) 231 self.assertTree(tree)
256 232
257 results = self.gclient(['status']) 233 results = self.gclient(['status'])
258 out = results[0].splitlines(False) 234 out = results[0].splitlines(False)
235 self.assertEquals(4, len(out))
259 self.assertEquals(out[0], '') 236 self.assertEquals(out[0], '')
260 self.assertTrue(out[1].startswith('________ running \'svn status\' in \'')) 237 self.assertTrue(out[1].startswith('________ running \'svn status\' in \''))
261 self.assertEquals(out[2], '? other') 238 self.assertEquals(out[2], '? other')
262 self.assertEquals(out[3], '? hooked1') 239 self.assertEquals(out[3], '? third_party/foo')
263 self.assertEquals(out[4], '? hooked2') 240 self.assertEquals('', results[1])
264 self.assertEquals(out[5], '? third_party/foo')
265 self.assertEquals(6, len(out))
266 self.checkString('', results[1])
267 self.assertEquals(0, results[2])
268
269 def testRunHooks(self):
270 self.gclient(['config', self.svn_base + 'trunk/src/'])
271 self.gclient(['sync', '--deps', 'mac'])
272 results = self.gclient(['runhooks'])
273 out = results[0].splitlines(False)
274 self.assertEquals(4, len(out))
275 self.assertEquals(out[0], '')
276 self.assertTrue(re.match(r'^________ running \'.*?python -c '
277 r'open\(\'src/hooked1\', \'w\'\)\.write\(\'hooked1\'\)\' in \'.*',
278 out[1]))
279 self.assertEquals(out[2], '')
280 # runhooks runs all hooks even if not matching by design.
281 self.assertTrue(re.match(r'^________ running \'.*?python -c '
282 r'open\(\'src/hooked2\', \'w\'\)\.write\(\'hooked2\'\)\' in \'.*',
283 out[3]))
284 self.checkString('', results[1])
285 self.assertEquals(0, results[2]) 241 self.assertEquals(0, results[2])
286 242
287 243
288 class GClientSmokeGIT(GClientSmokeBase): 244 class GClientSmokeGIT(GClientSmokeBase):
289 def testSync(self): 245 def testSyncGit(self):
246 """Test pure gclient git checkout, example of Chromium OS checkout"""
290 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 247 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
291 # Test unversioned checkout. 248 # Test unversioned checkout.
292 results = self.gclient(['sync', '--deps', 'mac']) 249 results = self.gclient(['sync', '--deps', 'mac'])
293 out = results[0].splitlines(False) 250 logging.debug(results[0])
294 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must
295 # add sync parsing to get the list of updated files.
296 self.assertEquals(13, len(out))
297 self.assertTrue(results[1].startswith('Switched to a new branch \'')) 251 self.assertTrue(results[1].startswith('Switched to a new branch \''))
298 self.assertEquals(0, results[2]) 252 self.assertEquals(0, results[2])
299 tree = mangle_git_tree( 253 tree = mangle_git_tree(
300 ('src', FAKE.git_hashes['repo_1'][1][1]), 254 ('src', FAKE.git_hashes['repo_1'][1][1]),
301 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]), 255 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]),
302 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]), 256 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]),
303 ) 257 )
304 tree[join('src', 'hooked1')] = 'hooked1'
305 tree[join('src', 'hooked2')] = 'hooked2'
306 self.assertTree(tree) 258 self.assertTree(tree)
307 259
308 # Manually remove hooked1 before synching to make sure it's not recreated.
309 os.remove(join(self.root_dir, 'src', 'hooked1'))
310
311 # Test incremental versioned sync: sync backward. 260 # Test incremental versioned sync: sync backward.
312 results = self.gclient(['sync', '--revision', 261 results = self.gclient(['sync', '--revision',
313 'src@' + FAKE.git_hashes['repo_1'][0][0], 262 'src@' + FAKE.git_hashes['repo_1'][0][0],
314 '--deps', 'mac', '--delete_unversioned_trees']) 263 '--deps', 'mac', '--delete_unversioned_trees'])
315 logging.debug(results[0]) 264 logging.debug(results[0])
316 out = results[0].splitlines(False) 265 self.assertEquals('', results[1])
317 self.assertEquals(20, len(out))
318 self.checkString('', results[1])
319 self.assertEquals(0, results[2]) 266 self.assertEquals(0, results[2])
320 tree = mangle_git_tree( 267 tree = mangle_git_tree(
321 ('src', FAKE.git_hashes['repo_1'][0][1]), 268 ('src', FAKE.git_hashes['repo_1'][0][1]),
322 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]), 269 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]),
323 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]), 270 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]),
324 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]), 271 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]),
325 ) 272 )
326 tree[join('src', 'hooked2')] = 'hooked2'
327 self.assertTree(tree) 273 self.assertTree(tree)
328 # Test incremental sync: delete-unversioned_trees isn't there. 274 # Test incremental sync: delete-unversioned_trees isn't there.
329 results = self.gclient(['sync', '--deps', 'mac']) 275 results = self.gclient(['sync', '--deps', 'mac'])
330 logging.debug(results[0]) 276 logging.debug(results[0])
331 out = results[0].splitlines(False) 277 self.assertEquals('', results[1])
332 self.assertEquals(25, len(out))
333 self.checkString('', results[1])
334 self.assertEquals(0, results[2]) 278 self.assertEquals(0, results[2])
335 tree = mangle_git_tree( 279 tree = mangle_git_tree(
336 ('src', FAKE.git_hashes['repo_1'][1][1]), 280 ('src', FAKE.git_hashes['repo_1'][1][1]),
337 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]), 281 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]),
338 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]), 282 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]),
339 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]), 283 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]),
340 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]), 284 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]),
341 ) 285 )
342 tree[join('src', 'hooked1')] = 'hooked1'
343 tree[join('src', 'hooked2')] = 'hooked2'
344 self.assertTree(tree) 286 self.assertTree(tree)
345 287
346 def testRevertAndStatus(self): 288 def testRevertAndStatus(self):
347 """TODO(maruel): Remove this line once this test is fixed.""" 289 """TODO(maruel): Remove this line once this test is fixed."""
348 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 290 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
349 # Tested in testSync. 291 results = self.gclient(['sync', '--deps', 'mac'])
350 self.gclient(['sync', '--deps', 'mac'])
351 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!') 292 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!')
352 293
353 results = self.gclient(['status']) 294 results = self.gclient(['status'])
354 out = results[0].splitlines(False) 295 out = results[0].splitlines(False)
355 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned 296 # TODO(maruel): THIS IS WRONG.
356 # files.
357 self.assertEquals(0, len(out)) 297 self.assertEquals(0, len(out))
358 298
359 # Revert implies --force implies running hooks without looking at pattern
360 # matching.
361 results = self.gclient(['revert']) 299 results = self.gclient(['revert'])
362 out = results[0].splitlines(False) 300 self.assertEquals('', results[1])
363 # TODO(maruel): http://crosbug.com/3583 It just runs the hooks right now.
364 self.assertEquals(7, len(out))
365 self.checkString('', results[1])
366 self.assertEquals(0, results[2]) 301 self.assertEquals(0, results[2])
367 tree = mangle_git_tree( 302 tree = mangle_git_tree(
368 ('src', FAKE.git_hashes['repo_1'][1][1]), 303 ('src', FAKE.git_hashes['repo_1'][1][1]),
369 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]), 304 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]),
370 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]), 305 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]),
371 ) 306 )
372 # TODO(maruel): http://crosbug.com/3583 This file should have been removed. 307 # TODO(maruel): THIS IS WRONG.
373 tree[join('src', 'repo2', 'hi')] = 'Hey!' 308 tree[join('src', 'repo2', 'hi')] = 'Hey!'
374 tree[join('src', 'hooked1')] = 'hooked1'
375 tree[join('src', 'hooked2')] = 'hooked2'
376 self.assertTree(tree) 309 self.assertTree(tree)
377 310
378 results = self.gclient(['status']) 311 results = self.gclient(['status'])
379 out = results[0].splitlines(False) 312 out = results[0].splitlines(False)
380 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned 313 # TODO(maruel): THIS IS WRONG.
381 # files.
382 self.assertEquals(0, len(out)) 314 self.assertEquals(0, len(out))
383 315
384 def testRunHooks(self): 316
385 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 317 class GClientSmokeRevInfo(GClientSmokeBase):
386 self.gclient(['sync', '--deps', 'mac']) 318 """revert is the second most important command. Hence test it more."""
387 results = self.gclient(['runhooks']) 319 def setUp(self):
388 logging.debug(results[0]) 320 GClientSmokeBase.setUp(self)
389 out = results[0].splitlines(False) 321 self.gclient(['config', self.URL_BASE])
390 self.assertEquals(4, len(out))
391 self.assertEquals(out[0], '')
392 self.assertTrue(re.match(r'^________ running \'.*?python -c '
393 r'open\(\'src/hooked1\', \'w\'\)\.write\(\'hooked1\'\)\' in \'.*',
394 out[1]))
395 self.assertEquals(out[2], '')
396 # runhooks runs all hooks even if not matching by design.
397 self.assertTrue(re.match(r'^________ running \'.*?python -c '
398 r'open\(\'src/hooked2\', \'w\'\)\.write\(\'hooked2\'\)\' in \'.*',
399 out[3]))
400 self.checkString('', results[1])
401 self.assertEquals(0, results[2])
402 322
403 323
404 if __name__ == '__main__': 324 if __name__ == '__main__':
405 if '-v' in sys.argv: 325 if '-v' in sys.argv:
406 logging.basicConfig(level=logging.DEBUG) 326 logging.basicConfig(level=logging.DEBUG)
407 if '-l' in sys.argv: 327 if '-l' in sys.argv:
408 SHOULD_LEAK = True 328 SHOULD_LEAK = True
409 sys.argv.remove('-l') 329 sys.argv.remove('-l')
410 FAKE = FakeRepos(TRIAL_DIR, SHOULD_LEAK, True) 330 FAKE = FakeRepos(TRIAL_DIR, SHOULD_LEAK, True)
411 try: 331 try:
412 FAKE.setUp() 332 FAKE.setUp()
413 unittest.main() 333 unittest.main()
414 finally: 334 finally:
415 FAKE.tearDown() 335 FAKE.tearDown()
OLDNEW
« no previous file with comments | « tests/fake_repos.py ('k') | tests/gclient_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698