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

Side by Side Diff: tests/gclient_smoketest.py

Issue 2304002: Add workaround to ignore the first solution specified with --revision solution@rev (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') | 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/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.
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 results = self.gclient(['config', 'foo', 'faa', 'fuu']) 202 results = self.gclient(['config', 'foo', 'faa', 'fuu'])
203 err = ('Usage: gclient.py config [options] [url] [safesync url]\n\n' 203 err = ('Usage: gclient.py config [options] [url] [safesync url]\n\n'
204 'gclient.py: error: Inconsistent arguments. Use either --spec or one' 204 'gclient.py: error: Inconsistent arguments. Use either --spec or one'
205 ' or 2 args\n') 205 ' or 2 args\n')
206 self.check(('', err, 2), results) 206 self.check(('', err, 2), results)
207 self.assertFalse(os.path.exists(join(self.root_dir, '.gclient'))) 207 self.assertFalse(os.path.exists(join(self.root_dir, '.gclient')))
208 208
209 209
210 class GClientSmokeSVN(GClientSmokeBase): 210 class GClientSmokeSVN(GClientSmokeBase):
211 def testSync(self): 211 def testSync(self):
212 # TODO(maruel): safesync, multiple solutions, invalid@revisions, 212 # TODO(maruel): safesync.
213 # multiple revisions.
214 self.gclient(['config', self.svn_base + 'trunk/src/']) 213 self.gclient(['config', self.svn_base + 'trunk/src/'])
215 # Test unversioned checkout. 214 # Test unversioned checkout.
216 results = self.gclient(['sync', '--deps', 'mac']) 215 results = self.gclient(['sync', '--deps', 'mac'])
217 logging.debug(results[0]) 216 logging.debug(results[0])
218 out = results[0].splitlines(False) 217 out = results[0].splitlines(False)
219 self.assertEquals(17, len(out)) 218 self.assertEquals(17, len(out))
220 self.checkString('', results[1]) 219 self.checkString('', results[1])
221 self.assertEquals(0, results[2]) 220 self.assertEquals(0, results[2])
222 tree = mangle_svn_tree( 221 tree = mangle_svn_tree(
223 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]), 222 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]),
224 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'), 223 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'),
225 FAKE.svn_revs[1]), 224 FAKE.svn_revs[1]),
226 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]), 225 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
227 ) 226 )
228 tree[join('src', 'hooked1')] = 'hooked1' 227 tree[join('src', 'svn_hooked1')] = 'svn_hooked1'
229 self.assertTree(tree) 228 self.assertTree(tree)
230 229
231 # Manually remove hooked1 before synching to make sure it's not recreated. 230 # Manually remove svn_hooked1 before synching to make sure it's not
232 os.remove(join(self.root_dir, 'src', 'hooked1')) 231 # recreated.
232 os.remove(join(self.root_dir, 'src', 'svn_hooked1'))
233 233
234 # Test incremental versioned sync: sync backward. 234 # Test incremental versioned sync: sync backward.
235 results = self.gclient(['sync', '--revision', 'src@1', '--deps', 'mac', 235 results = self.gclient(['sync', '--revision', 'src@1', '--deps', 'mac',
236 '--delete_unversioned_trees']) 236 '--delete_unversioned_trees'])
237 logging.debug(results[0]) 237 logging.debug(results[0])
238 out = results[0].splitlines(False) 238 out = results[0].splitlines(False)
239 self.assertEquals(19, len(out)) 239 self.assertEquals(19, len(out))
240 self.checkString('', results[1]) 240 self.checkString('', results[1])
241 self.assertEquals(0, results[2]) 241 self.assertEquals(0, results[2])
242 tree = mangle_svn_tree( 242 tree = mangle_svn_tree(
(...skipping 17 matching lines...) Expand all
260 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]), 260 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]),
261 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'), 261 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'),
262 FAKE.svn_revs[2]), 262 FAKE.svn_revs[2]),
263 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'), 263 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'),
264 FAKE.svn_revs[1]), 264 FAKE.svn_revs[1]),
265 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]), 265 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
266 (join('trunk', 'third_party', 'foo'), 266 (join('trunk', 'third_party', 'foo'),
267 join('src', 'third_party', 'prout'), 267 join('src', 'third_party', 'prout'),
268 FAKE.svn_revs[2]), 268 FAKE.svn_revs[2]),
269 ) 269 )
270 tree[join('src', 'hooked1')] = 'hooked1' 270 tree[join('src', 'svn_hooked1')] = 'svn_hooked1'
271 self.assertTree(tree) 271 self.assertTree(tree)
272 272
273 def SyncAtRev1(self, arg):
274 self.gclient(['config', self.svn_base + 'trunk/src/'])
275 results = self.gclient(['sync', '--deps', 'mac', '-r', arg])
276 out = results[0].splitlines(False)
277 self.assertEquals(19, len(out))
278 self.checkString('', results[1])
279 self.assertEquals(0, results[2])
280 tree = mangle_svn_tree(
281 (join('trunk', 'src'), 'src', FAKE.svn_revs[1]),
282 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'),
283 FAKE.svn_revs[2]),
284 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
285 (join('trunk', 'third_party', 'foo'),
286 join('src', 'third_party', 'prout'),
287 FAKE.svn_revs[2]),
288 )
289 self.assertTree(tree)
290
291 def testSyncIgnoredSolutionName(self):
292 self.SyncAtRev1('ignored@1')
293
294 def testSyncNoSolutionName(self):
295 self.SyncAtRev1('1')
296
273 def testRevertAndStatus(self): 297 def testRevertAndStatus(self):
274 self.gclient(['config', self.svn_base + 'trunk/src/']) 298 self.gclient(['config', self.svn_base + 'trunk/src/'])
275 # Tested in testSync. 299 # Tested in testSync.
276 self.gclient(['sync', '--deps', 'mac']) 300 self.gclient(['sync', '--deps', 'mac'])
277 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!') 301 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!')
278 302
279 results = self.gclient(['status']) 303 results = self.gclient(['status'])
280 out = results[0].splitlines(False) 304 out = results[0].splitlines(False)
281 self.assertEquals(out[0], '') 305 self.assertEquals(out[0], '')
282 self.assertTrue(out[1].startswith('________ running \'svn status\' in \'')) 306 self.assertTrue(out[1].startswith('________ running \'svn status\' in \''))
283 self.assertEquals(out[2], '? other') 307 self.assertEquals(out[2], '? svn_hooked1')
284 self.assertEquals(out[3], '? hooked1') 308 self.assertEquals(out[3], '? other')
285 self.assertEquals(out[4], '? third_party/foo') 309 self.assertEquals(out[4], '? third_party/foo')
286 self.assertEquals(out[5], '') 310 self.assertEquals(out[5], '')
287 self.assertTrue(out[6].startswith('________ running \'svn status\' in \'')) 311 self.assertTrue(out[6].startswith('________ running \'svn status\' in \''))
288 self.assertEquals(out[7], '? hi') 312 self.assertEquals(out[7], '? hi')
289 self.assertEquals(8, len(out)) 313 self.assertEquals(8, len(out))
290 self.assertEquals('', results[1]) 314 self.assertEquals('', results[1])
291 self.assertEquals(0, results[2]) 315 self.assertEquals(0, results[2])
292 316
293 # Revert implies --force implies running hooks without looking at pattern 317 # Revert implies --force implies running hooks without looking at pattern
294 # matching. 318 # matching.
295 results = self.gclient(['revert']) 319 results = self.gclient(['revert'])
296 out = results[0].splitlines(False) 320 out = results[0].splitlines(False)
297 self.assertEquals(22, len(out)) 321 self.assertEquals(22, len(out))
298 self.checkString('', results[1]) 322 self.checkString('', results[1])
299 self.assertEquals(0, results[2]) 323 self.assertEquals(0, results[2])
300 tree = mangle_svn_tree( 324 tree = mangle_svn_tree(
301 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]), 325 (join('trunk', 'src'), 'src', FAKE.svn_revs[-1]),
302 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'), 326 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'),
303 FAKE.svn_revs[1]), 327 FAKE.svn_revs[1]),
304 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]), 328 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
305 ) 329 )
306 tree[join('src', 'hooked1')] = 'hooked1' 330 tree[join('src', 'svn_hooked1')] = 'svn_hooked1'
307 tree[join('src', 'hooked2')] = 'hooked2' 331 tree[join('src', 'svn_hooked2')] = 'svn_hooked2'
308 self.assertTree(tree) 332 self.assertTree(tree)
309 333
310 results = self.gclient(['status']) 334 results = self.gclient(['status'])
311 out = results[0].splitlines(False) 335 out = results[0].splitlines(False)
312 self.assertEquals(out[0], '') 336 self.assertEquals(out[0], '')
313 self.assertTrue(out[1].startswith('________ running \'svn status\' in \'')) 337 self.assertTrue(out[1].startswith('________ running \'svn status\' in \''))
314 self.assertEquals(out[2], '? other') 338 self.assertEquals(out[2], '? svn_hooked1')
315 self.assertEquals(out[3], '? hooked1') 339 self.assertEquals(out[3], '? svn_hooked2')
316 self.assertEquals(out[4], '? hooked2') 340 self.assertEquals(out[4], '? other')
317 self.assertEquals(out[5], '? third_party/foo') 341 self.assertEquals(out[5], '? third_party/foo')
318 self.assertEquals(6, len(out)) 342 self.assertEquals(6, len(out))
319 self.checkString('', results[1]) 343 self.checkString('', results[1])
320 self.assertEquals(0, results[2]) 344 self.assertEquals(0, results[2])
321 345
322 def testRevertAndStatusDepsOs(self): 346 def testRevertAndStatusDepsOs(self):
323 self.gclient(['config', self.svn_base + 'trunk/src/']) 347 self.gclient(['config', self.svn_base + 'trunk/src/'])
324 # Tested in testSync. 348 # Tested in testSync.
325 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1']) 349 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1'])
326 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!') 350 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!')
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 self.assertEquals(0, results[2]) 393 self.assertEquals(0, results[2])
370 394
371 def testRunHooks(self): 395 def testRunHooks(self):
372 self.gclient(['config', self.svn_base + 'trunk/src/']) 396 self.gclient(['config', self.svn_base + 'trunk/src/'])
373 self.gclient(['sync', '--deps', 'mac']) 397 self.gclient(['sync', '--deps', 'mac'])
374 results = self.gclient(['runhooks']) 398 results = self.gclient(['runhooks'])
375 out = results[0].splitlines(False) 399 out = results[0].splitlines(False)
376 self.assertEquals(4, len(out)) 400 self.assertEquals(4, len(out))
377 self.assertEquals(out[0], '') 401 self.assertEquals(out[0], '')
378 self.assertTrue(re.match(r'^________ running \'.*?python -c ' 402 self.assertTrue(re.match(r'^________ running \'.*?python -c '
379 r'open\(\'src/hooked1\', \'w\'\)\.write\(\'hooked1\'\)\' in \'.*', 403 r'open\(\'src/svn_hooked1\', \'w\'\)\.write\(\'svn_hooked1\'\)\' in \'.*',
380 out[1])) 404 out[1]))
381 self.assertEquals(out[2], '') 405 self.assertEquals(out[2], '')
382 # runhooks runs all hooks even if not matching by design. 406 # runhooks runs all hooks even if not matching by design.
383 self.assertTrue(re.match(r'^________ running \'.*?python -c ' 407 self.assertTrue(re.match(r'^________ running \'.*?python -c '
384 r'open\(\'src/hooked2\', \'w\'\)\.write\(\'hooked2\'\)\' in \'.*', 408 r'open\(\'src/svn_hooked2\', \'w\'\)\.write\(\'svn_hooked2\'\)\' in \'.*',
385 out[3])) 409 out[3]))
386 self.checkString('', results[1]) 410 self.checkString('', results[1])
387 self.assertEquals(0, results[2]) 411 self.assertEquals(0, results[2])
388 412
389 def testRunHooks(self): 413 def testRunHooks(self):
390 self.gclient(['config', self.svn_base + 'trunk/src/']) 414 self.gclient(['config', self.svn_base + 'trunk/src/'])
391 self.gclient(['sync', '--deps', 'mac']) 415 self.gclient(['sync', '--deps', 'mac'])
392 results = self.gclient(['runhooks']) 416 results = self.gclient(['runhooks'])
393 out = results[0].splitlines(False) 417 out = results[0].splitlines(False)
394 self.assertEquals(4, len(out)) 418 self.assertEquals(4, len(out))
395 self.assertEquals(out[0], '') 419 self.assertEquals(out[0], '')
396 self.assertTrue(re.match(r'^________ running \'.*?python -c ' 420 self.assertTrue(re.match(r'^________ running \'.*?python -c '
397 r'open\(\'src/hooked1\', \'w\'\)\.write\(\'hooked1\'\)\' in \'.*', 421 r'open\(\'src/svn_hooked1\', \'w\'\)\.write\(\'svn_hooked1\'\)\' in \'.*',
398 out[1])) 422 out[1]))
399 self.assertEquals(out[2], '') 423 self.assertEquals(out[2], '')
400 # runhooks runs all hooks even if not matching by design. 424 # runhooks runs all hooks even if not matching by design.
401 self.assertTrue(re.match(r'^________ running \'.*?python -c ' 425 self.assertTrue(re.match(r'^________ running \'.*?python -c '
402 r'open\(\'src/hooked2\', \'w\'\)\.write\(\'hooked2\'\)\' in \'.*', 426 r'open\(\'src/svn_hooked2\', \'w\'\)\.write\(\'svn_hooked2\'\)\' in \'.*',
403 out[3])) 427 out[3]))
404 self.checkString('', results[1]) 428 self.checkString('', results[1])
405 self.assertEquals(0, results[2]) 429 self.assertEquals(0, results[2])
406 430
407 def testRunHooksDepsOs(self): 431 def testRunHooksDepsOs(self):
408 self.gclient(['config', self.svn_base + 'trunk/src/']) 432 self.gclient(['config', self.svn_base + 'trunk/src/'])
409 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1']) 433 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1'])
410 results = self.gclient(['runhooks']) 434 results = self.gclient(['runhooks'])
411 self.check(('', '', 0), results) 435 self.check(('', '', 0), results)
412 436
413 def testRevInfo(self): 437 def testRevInfo(self):
414 # TODO(maruel): Test multiple solutions. 438 # TODO(maruel): Test multiple solutions.
415 self.gclient(['config', self.svn_base + 'trunk/src/']) 439 self.gclient(['config', self.svn_base + 'trunk/src/'])
416 self.gclient(['sync', '--deps', 'mac']) 440 self.gclient(['sync', '--deps', 'mac'])
417 results = self.gclient(['revinfo']) 441 results = self.gclient(['revinfo'])
418 out = ('src: %(base)s/src@2;\n' 442 out = ('src: %(base)s/src@2;\n'
419 'src/other: %(base)s/other@2;\n' 443 'src/other: %(base)s/other@2;\n'
420 'src/third_party/foo: %(base)s/third_party/foo@1\n' % 444 'src/third_party/foo: %(base)s/third_party/foo@1\n' %
421 { 'base': self.svn_base + 'trunk' }) 445 { 'base': self.svn_base + 'trunk' })
422 self.check((out, '', 0), results) 446 self.check((out, '', 0), results)
423 447
424 448
425 class GClientSmokeGIT(GClientSmokeBase): 449 class GClientSmokeGIT(GClientSmokeBase):
426 def testSync(self): 450 def testSync(self):
427 # TODO(maruel): safesync, multiple solutions, invalid@revisions, 451 # TODO(maruel): safesync.
428 # multiple revisions.
429 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 452 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
430 # Test unversioned checkout. 453 # Test unversioned checkout.
431 results = self.gclient(['sync', '--deps', 'mac']) 454 results = self.gclient(['sync', '--deps', 'mac'])
432 out = results[0].splitlines(False) 455 out = results[0].splitlines(False)
433 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must 456 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must
434 # add sync parsing to get the list of updated files. 457 # add sync parsing to get the list of updated files.
435 self.assertEquals(13, len(out)) 458 self.assertEquals(13, len(out))
436 self.assertTrue(results[1].startswith('Switched to a new branch \'')) 459 self.assertTrue(results[1].startswith('Switched to a new branch \''))
437 self.assertEquals(0, results[2]) 460 self.assertEquals(0, results[2])
438 tree = mangle_git_tree( 461 tree = mangle_git_tree(
439 ('src', FAKE.git_hashes['repo_1'][1][1]), 462 ('src', FAKE.git_hashes['repo_1'][1][1]),
440 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]), 463 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]),
441 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]), 464 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]),
442 ) 465 )
443 tree[join('src', 'hooked1')] = 'hooked1' 466 tree[join('src', 'git_hooked1')] = 'git_hooked1'
444 tree[join('src', 'hooked2')] = 'hooked2' 467 tree[join('src', 'git_hooked2')] = 'git_hooked2'
445 self.assertTree(tree) 468 self.assertTree(tree)
446 469
447 # Manually remove hooked1 before synching to make sure it's not recreated. 470 # Manually remove git_hooked1 before synching to make sure it's not
448 os.remove(join(self.root_dir, 'src', 'hooked1')) 471 # recreated.
472 os.remove(join(self.root_dir, 'src', 'git_hooked1'))
449 473
450 # Test incremental versioned sync: sync backward. 474 # Test incremental versioned sync: sync backward.
451 results = self.gclient(['sync', '--revision', 475 results = self.gclient(['sync', '--revision',
452 'src@' + FAKE.git_hashes['repo_1'][0][0], 476 'src@' + FAKE.git_hashes['repo_1'][0][0],
453 '--deps', 'mac', '--delete_unversioned_trees']) 477 '--deps', 'mac', '--delete_unversioned_trees'])
454 logging.debug(results[0]) 478 logging.debug(results[0])
455 out = results[0].splitlines(False) 479 out = results[0].splitlines(False)
456 self.assertEquals(20, len(out)) 480 self.assertEquals(20, len(out))
457 self.checkString('', results[1]) 481 self.checkString('', results[1])
458 self.assertEquals(0, results[2]) 482 self.assertEquals(0, results[2])
459 tree = mangle_git_tree( 483 tree = mangle_git_tree(
460 ('src', FAKE.git_hashes['repo_1'][0][1]), 484 ('src', FAKE.git_hashes['repo_1'][0][1]),
461 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]), 485 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]),
462 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]), 486 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]),
463 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]), 487 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]),
464 ) 488 )
465 tree[join('src', 'hooked2')] = 'hooked2' 489 tree[join('src', 'git_hooked2')] = 'git_hooked2'
466 self.assertTree(tree) 490 self.assertTree(tree)
467 # Test incremental sync: delete-unversioned_trees isn't there. 491 # Test incremental sync: delete-unversioned_trees isn't there.
468 results = self.gclient(['sync', '--deps', 'mac']) 492 results = self.gclient(['sync', '--deps', 'mac'])
469 logging.debug(results[0]) 493 logging.debug(results[0])
470 out = results[0].splitlines(False) 494 out = results[0].splitlines(False)
471 self.assertEquals(25, len(out)) 495 self.assertEquals(25, len(out))
472 self.checkString('', results[1]) 496 self.checkString('', results[1])
473 self.assertEquals(0, results[2]) 497 self.assertEquals(0, results[2])
474 tree = mangle_git_tree( 498 tree = mangle_git_tree(
475 ('src', FAKE.git_hashes['repo_1'][1][1]), 499 ('src', FAKE.git_hashes['repo_1'][1][1]),
476 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]), 500 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]),
477 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]), 501 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]),
478 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]), 502 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]),
479 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]), 503 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]),
480 ) 504 )
481 tree[join('src', 'hooked1')] = 'hooked1' 505 tree[join('src', 'git_hooked1')] = 'git_hooked1'
482 tree[join('src', 'hooked2')] = 'hooked2' 506 tree[join('src', 'git_hooked2')] = 'git_hooked2'
483 self.assertTree(tree) 507 self.assertTree(tree)
484 508
485 def testRevertAndStatus(self): 509 def testRevertAndStatus(self):
486 """TODO(maruel): Remove this line once this test is fixed.""" 510 """TODO(maruel): Remove this line once this test is fixed."""
487 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 511 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
488 # Tested in testSync. 512 # Tested in testSync.
489 self.gclient(['sync', '--deps', 'mac']) 513 self.gclient(['sync', '--deps', 'mac'])
490 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!') 514 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!')
491 515
492 results = self.gclient(['status']) 516 results = self.gclient(['status'])
(...skipping 10 matching lines...) Expand all
503 self.assertEquals(7, len(out)) 527 self.assertEquals(7, len(out))
504 self.checkString('', results[1]) 528 self.checkString('', results[1])
505 self.assertEquals(0, results[2]) 529 self.assertEquals(0, results[2])
506 tree = mangle_git_tree( 530 tree = mangle_git_tree(
507 ('src', FAKE.git_hashes['repo_1'][1][1]), 531 ('src', FAKE.git_hashes['repo_1'][1][1]),
508 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]), 532 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]),
509 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]), 533 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]),
510 ) 534 )
511 # TODO(maruel): http://crosbug.com/3583 This file should have been removed. 535 # TODO(maruel): http://crosbug.com/3583 This file should have been removed.
512 tree[join('src', 'repo2', 'hi')] = 'Hey!' 536 tree[join('src', 'repo2', 'hi')] = 'Hey!'
513 tree[join('src', 'hooked1')] = 'hooked1' 537 tree[join('src', 'git_hooked1')] = 'git_hooked1'
514 tree[join('src', 'hooked2')] = 'hooked2' 538 tree[join('src', 'git_hooked2')] = 'git_hooked2'
515 self.assertTree(tree) 539 self.assertTree(tree)
516 540
517 results = self.gclient(['status']) 541 results = self.gclient(['status'])
518 out = results[0].splitlines(False) 542 out = results[0].splitlines(False)
519 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned 543 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned
520 # files. 544 # files.
521 self.assertEquals(0, len(out)) 545 self.assertEquals(0, len(out))
522 546
523 def testRunHooks(self): 547 def testRunHooks(self):
524 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 548 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
525 self.gclient(['sync', '--deps', 'mac']) 549 self.gclient(['sync', '--deps', 'mac'])
526 results = self.gclient(['runhooks']) 550 results = self.gclient(['runhooks'])
527 logging.debug(results[0]) 551 logging.debug(results[0])
528 out = results[0].splitlines(False) 552 out = results[0].splitlines(False)
529 self.assertEquals(4, len(out)) 553 self.assertEquals(4, len(out))
530 self.assertEquals(out[0], '') 554 self.assertEquals(out[0], '')
531 self.assertTrue(re.match(r'^________ running \'.*?python -c ' 555 self.assertTrue(re.match(r'^________ running \'.*?python -c '
532 r'open\(\'src/hooked1\', \'w\'\)\.write\(\'hooked1\'\)\' in \'.*', 556 r'open\(\'src/git_hooked1\', \'w\'\)\.write\(\'git_hooked1\'\)\' in \'.*',
533 out[1])) 557 out[1]))
534 self.assertEquals(out[2], '') 558 self.assertEquals(out[2], '')
535 # runhooks runs all hooks even if not matching by design. 559 # runhooks runs all hooks even if not matching by design.
536 self.assertTrue(re.match(r'^________ running \'.*?python -c ' 560 self.assertTrue(re.match(r'^________ running \'.*?python -c '
537 r'open\(\'src/hooked2\', \'w\'\)\.write\(\'hooked2\'\)\' in \'.*', 561 r'open\(\'src/git_hooked2\', \'w\'\)\.write\(\'git_hooked2\'\)\' in \'.*',
538 out[3])) 562 out[3]))
539 self.checkString('', results[1]) 563 self.checkString('', results[1])
540 self.assertEquals(0, results[2]) 564 self.assertEquals(0, results[2])
541 565
542 def testRevInfo(self): 566 def testRevInfo(self):
543 # TODO(maruel): Test multiple solutions. 567 # TODO(maruel): Test multiple solutions.
544 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 568 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
545 self.gclient(['sync', '--deps', 'mac']) 569 self.gclient(['sync', '--deps', 'mac'])
546 results = self.gclient(['revinfo']) 570 results = self.gclient(['revinfo'])
547 out = ('src: %(base)srepo_1@%(hash1)s;\n' 571 out = ('src: %(base)srepo_1@%(hash1)s;\n'
548 'src/repo2: %(base)srepo_2@%(hash2)s;\n' 572 'src/repo2: %(base)srepo_2@%(hash2)s;\n'
549 'src/repo2/repo_renamed: %(base)srepo_3@%(hash3)s\n' % 573 'src/repo2/repo_renamed: %(base)srepo_3@%(hash3)s\n' %
550 { 574 {
551 'base': self.git_base, 575 'base': self.git_base,
552 'hash1': FAKE.git_hashes['repo_1'][1][0], 576 'hash1': FAKE.git_hashes['repo_1'][1][0],
553 'hash2': FAKE.git_hashes['repo_2'][0][0], 577 'hash2': FAKE.git_hashes['repo_2'][0][0],
554 'hash3': FAKE.git_hashes['repo_3'][1][0], 578 'hash3': FAKE.git_hashes['repo_3'][1][0],
555 }) 579 })
556 self.check((out, '', 0), results) 580 self.check((out, '', 0), results)
557 581
558 582
583 class GClientSmokeBoth(GClientSmokeBase):
584 def testMultiSolutions(self):
585 self.gclient(['config', '--spec',
586 'solutions=['
587 '{"name": "src",'
588 ' "url": "' + self.svn_base + 'trunk/src/"},'
589 '{"name": "src-git",'
590 '"url": "' + self.git_base + 'repo_1"}]'])
591 results = self.gclient(['sync', '--deps', 'mac'])
592 out = results[0].splitlines(False)
593 self.assertEquals(32, len(out))
594 # TODO(maruel): Something's wrong here. git outputs to stderr 'Switched to
595 # new branch \'hash\''.
596 #self.checkString('', results[1])
597 self.assertEquals(0, results[2])
598 tree = mangle_git_tree(
599 ('src-git', FAKE.git_hashes['repo_1'][1][1]),
600 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][0][1]),
601 (join('src', 'repo2', 'repo_renamed'), FAKE.git_hashes['repo_3'][1][1]),
602 )
603 tree.update(mangle_svn_tree(
604 (join('trunk', 'src'), 'src', FAKE.svn_revs[2]),
605 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'foo'),
606 FAKE.svn_revs[1]),
607 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
608 ))
609 tree[join('src', 'git_hooked1')] = 'git_hooked1'
610 tree[join('src', 'git_hooked2')] = 'git_hooked2'
611 tree[join('src', 'svn_hooked1')] = 'svn_hooked1'
612 tree[join('src', 'svn_hooked2')] = 'svn_hooked2'
613 self.assertTree(tree)
614
615 def testMultiSolutionsMultiRev(self):
616 self.gclient(['config', '--spec',
617 'solutions=['
618 '{"name": "src",'
619 ' "url": "' + self.svn_base + 'trunk/src/"},'
620 '{"name": "src-git",'
621 '"url": "' + self.git_base + 'repo_1"}]'])
622 results = self.gclient(['sync', '--deps', 'mac', '--revision', '1', '-r',
623 'src-git@' + FAKE.git_hashes['repo_1'][0][0]])
624 out = results[0].splitlines(False)
625 self.assertEquals(35, len(out))
626 # TODO(maruel): Something's wrong here. git outputs to stderr 'Switched to
627 # new branch \'hash\''.
628 #self.checkString('', results[1])
629 self.assertEquals(0, results[2])
630 tree = mangle_git_tree(
631 ('src-git', FAKE.git_hashes['repo_1'][0][1]),
632 (join('src', 'repo2'), FAKE.git_hashes['repo_2'][1][1]),
633 (join('src', 'repo2', 'repo3'), FAKE.git_hashes['repo_3'][1][1]),
634 (join('src', 'repo4'), FAKE.git_hashes['repo_4'][1][1]),
635 )
636 tree.update(mangle_svn_tree(
637 (join('trunk', 'src'), 'src', FAKE.svn_revs[1]),
638 (join('trunk', 'third_party', 'foo'), join('src', 'third_party', 'fpp'),
639 FAKE.svn_revs[2]),
640 (join('trunk', 'other'), join('src', 'other'), FAKE.svn_revs[2]),
641 (join('trunk', 'third_party', 'foo'),
642 join('src', 'third_party', 'prout'),
643 FAKE.svn_revs[2]),
644 ))
645 self.assertTree(tree)
646
647
559 if __name__ == '__main__': 648 if __name__ == '__main__':
560 if '-v' in sys.argv: 649 if '-v' in sys.argv:
561 logging.basicConfig(level=logging.DEBUG) 650 logging.basicConfig(level=logging.DEBUG)
562 if '-l' in sys.argv: 651 if '-l' in sys.argv:
563 SHOULD_LEAK = True 652 SHOULD_LEAK = True
564 sys.argv.remove('-l') 653 sys.argv.remove('-l')
565 FAKE = FakeRepos(TRIAL_DIR, SHOULD_LEAK, True) 654 FAKE = FakeRepos(TRIAL_DIR, SHOULD_LEAK, True)
566 try: 655 try:
567 FAKE.setUp() 656 FAKE.setUp()
568 unittest.main() 657 unittest.main()
569 finally: 658 finally:
570 FAKE.tearDown() 659 FAKE.tearDown()
OLDNEW
« no previous file with comments | « tests/fake_repos.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698