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

Side by Side Diff: tests/gclient_scm_test.py

Issue 362008: gclient: Make revinfo work on git. (Closed)
Patch Set: Created 11 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
« gclient.py ('K') | « gclient_scm.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 # 2 #
3 # Copyright 2008-2009 Google Inc. All Rights Reserved. 3 # Copyright 2008-2009 Google Inc. All Rights Reserved.
4 # 4 #
5 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License. 6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at 7 # You may obtain a copy of the License at
8 # 8 #
9 # http://www.apache.org/licenses/LICENSE-2.0 9 # http://www.apache.org/licenses/LICENSE-2.0
10 # 10 #
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 def setUp(self): 42 def setUp(self):
43 gclient_test.GClientBaseTestCase.setUp(self) 43 gclient_test.GClientBaseTestCase.setUp(self)
44 self.root_dir = self.Dir() 44 self.root_dir = self.Dir()
45 self.args = self.Args() 45 self.args = self.Args()
46 self.url = self.Url() 46 self.url = self.Url()
47 self.relpath = 'asf' 47 self.relpath = 'asf'
48 48
49 def testDir(self): 49 def testDir(self):
50 members = [ 50 members = [
51 'FullUrlForRelativeUrl', 'RunCommand', 'cleanup', 'diff', 'export', 51 'FullUrlForRelativeUrl', 'RunCommand', 'cleanup', 'diff', 'export',
52 'pack', 'relpath', 'revert', 'runhooks', 'scm_name', 'status', 52 'pack', 'relpath', 'revert', 'revinfo', 'runhooks', 'scm_name', 'status',
53 'update', 'url', 53 'update', 'url',
54 ] 54 ]
55 55
56 # If you add a member, be sure to add the relevant test! 56 # If you add a member, be sure to add the relevant test!
57 self.compareMembers(self._scm_wrapper(), members) 57 self.compareMembers(self._scm_wrapper(), members)
58 58
59 def testUnsupportedSCM(self): 59 def testUnsupportedSCM(self):
60 args = [self.url, self.root_dir, self.relpath] 60 args = [self.url, self.root_dir, self.relpath]
61 kwargs = {'scm_name' : 'foo'} 61 kwargs = {'scm_name' : 'foo'}
62 exception_msg = 'Unsupported scm %(scm_name)s' % kwargs 62 exception_msg = 'Unsupported scm %(scm_name)s' % kwargs
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 'Revision': 35, 316 'Revision': 35,
317 'Repository Root': self.root_dir, 317 'Repository Root': self.root_dir,
318 'Schedule': 'normal', 318 'Schedule': 'normal',
319 'Copied From URL': None, 319 'Copied From URL': None,
320 'Copied From Rev': None, 320 'Copied From Rev': None,
321 'Path': '.', 321 'Path': '.',
322 'Node Kind': 'dir', 322 'Node Kind': 'dir',
323 } 323 }
324 self.assertEqual(file_info, expected) 324 self.assertEqual(file_info, expected)
325 325
326 def testRevinfo(self):
327 options = self.Options(verbose=False)
328 xml_text = """<?xml version="1.0"?>
329 <info>
330 <entry
331 kind="dir"
332 path="."
333 revision="35">
334 <url>%s</url>
335 <repository>
336 <root>%s</root>
337 <uuid>7b9385f5-0452-0410-af26-ad4892b7a1fb</uuid>
338 </repository>
339 <wc-info>
340 <schedule>normal</schedule>
341 <depth>infinity</depth>
342 </wc-info>
343 <commit
344 revision="35">
345 <author>maruel</author>
346 <date>2008-12-04T20:12:19.685120Z</date>
347 </commit>
348 </entry>
349 </info>
350 """ % (self.url, self.root_dir)
351 gclient_scm.CaptureSVN(['info', '--xml',
352 self.url], os.getcwd()).AndReturn(xml_text)
353 self.mox.ReplayAll()
354 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
355 relpath=self.relpath)
356 rev_info = scm.revinfo(options, self.args, None)
357 self.assertEqual(rev_info, '35')
358
326 359
327 class GitWrapperTestCase(gclient_test.GClientBaseTestCase): 360 class GitWrapperTestCase(gclient_test.GClientBaseTestCase):
328 class OptionsObject(object): 361 class OptionsObject(object):
329 def __init__(self, test_case, verbose=False, revision=None): 362 def __init__(self, test_case, verbose=False, revision=None):
330 self.verbose = verbose 363 self.verbose = verbose
331 self.revision = revision 364 self.revision = revision
332 self.manually_grab_svn_rev = True 365 self.manually_grab_svn_rev = True
333 self.deps_os = None 366 self.deps_os = None
334 self.force = False 367 self.force = False
335 self.nohooks = False 368 self.nohooks = False
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 except WindowsError: 422 except WindowsError:
390 # git is not available, skip this test. 423 # git is not available, skip this test.
391 return False 424 return False
392 subprocess.Popen(['git', 'fast-import'], stdin=subprocess.PIPE, 425 subprocess.Popen(['git', 'fast-import'], stdin=subprocess.PIPE,
393 stdout=subprocess.PIPE, stderr=subprocess.STDOUT, 426 stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
394 cwd=path).communicate(input=git_import) 427 cwd=path).communicate(input=git_import)
395 subprocess.Popen(['git', 'checkout'], stdout=subprocess.PIPE, 428 subprocess.Popen(['git', 'checkout'], stdout=subprocess.PIPE,
396 stderr=subprocess.STDOUT, cwd=path).communicate() 429 stderr=subprocess.STDOUT, cwd=path).communicate()
397 return True 430 return True
398 431
399 def GetGitRev(self, path):
400 return subprocess.Popen(['git', 'rev-parse', 'HEAD'],
401 stdout=subprocess.PIPE,
402 stderr=subprocess.STDOUT,
403 cwd=path).communicate()[0].strip()
404
405 def setUp(self): 432 def setUp(self):
406 gclient_test.BaseTestCase.setUp(self) 433 gclient_test.BaseTestCase.setUp(self)
407 self.args = self.Args() 434 self.args = self.Args()
408 self.url = 'git://foo' 435 self.url = 'git://foo'
409 self.root_dir = tempfile.mkdtemp() 436 self.root_dir = tempfile.mkdtemp()
410 self.relpath = '.' 437 self.relpath = '.'
411 self.base_path = os.path.join(self.root_dir, self.relpath) 438 self.base_path = os.path.join(self.root_dir, self.relpath)
412 self.enabled = self.CreateGitRepo(self.sample_git_import, self.base_path) 439 self.enabled = self.CreateGitRepo(self.sample_git_import, self.base_path)
413 440
414 def tearDown(self): 441 def tearDown(self):
415 shutil.rmtree(self.root_dir) 442 shutil.rmtree(self.root_dir)
416 gclient_test.BaseTestCase.tearDown(self) 443 gclient_test.BaseTestCase.tearDown(self)
417 444
418 def testDir(self): 445 def testDir(self):
419 members = [ 446 members = [
420 'FullUrlForRelativeUrl', 'RunCommand', 'cleanup', 'diff', 'export', 447 'FullUrlForRelativeUrl', 'RunCommand', 'cleanup', 'diff', 'export',
421 'relpath', 'revert', 'runhooks', 'scm_name', 'status', 'update', 'url', 448 'relpath', 'revert', 'revinfo', 'runhooks', 'scm_name', 'status',
449 'update', 'url',
422 ] 450 ]
423 451
424 # If you add a member, be sure to add the relevant test! 452 # If you add a member, be sure to add the relevant test!
425 self.compareMembers(gclient_scm.CreateSCM(url=self.url), members) 453 self.compareMembers(gclient_scm.CreateSCM(url=self.url), members)
426 454
427 def testRevertMissing(self): 455 def testRevertMissing(self):
428 if not self.enabled: 456 if not self.enabled:
429 return 457 return
430 options = self.Options() 458 options = self.Options()
431 file_path = os.path.join(self.base_path, 'a') 459 file_path = os.path.join(self.base_path, 'a')
432 os.remove(file_path) 460 os.remove(file_path)
433 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 461 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
434 relpath=self.relpath) 462 relpath=self.relpath)
435 file_list = [] 463 file_list = []
436 scm.revert(options, self.args, file_list) 464 scm.revert(options, self.args, file_list)
437 self.assertEquals(file_list, [file_path]) 465 self.assertEquals(file_list, [file_path])
438 file_list = [] 466 file_list = []
439 scm.diff(options, self.args, file_list) 467 scm.diff(options, self.args, file_list)
440 self.assertEquals(file_list, []) 468 self.assertEquals(file_list, [])
441 469
442 def testRevertNone(self): 470 def testRevertNone(self):
443 if not self.enabled: 471 if not self.enabled:
444 return 472 return
445 options = self.Options() 473 options = self.Options()
446 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 474 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
447 relpath=self.relpath) 475 relpath=self.relpath)
448 file_list = [] 476 file_list = []
449 scm.revert(options, self.args, file_list) 477 scm.revert(options, self.args, file_list)
450 self.assertEquals(file_list, []) 478 self.assertEquals(file_list, [])
451 self.assertEquals(self.GetGitRev(self.base_path), 479 self.assertEquals(scm.revinfo(options, self.args, None),
452 '069c602044c5388d2d15c3f875b057c852003458') 480 '069c602044c5388d2d15c3f875b057c852003458')
453 481
454 482
455 def testRevertModified(self): 483 def testRevertModified(self):
456 if not self.enabled: 484 if not self.enabled:
457 return 485 return
458 options = self.Options() 486 options = self.Options()
459 file_path = os.path.join(self.base_path, 'a') 487 file_path = os.path.join(self.base_path, 'a')
460 open(file_path, 'a').writelines('touched\n') 488 open(file_path, 'a').writelines('touched\n')
461 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 489 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
462 relpath=self.relpath) 490 relpath=self.relpath)
463 file_list = [] 491 file_list = []
464 scm.revert(options, self.args, file_list) 492 scm.revert(options, self.args, file_list)
465 self.assertEquals(file_list, [file_path]) 493 self.assertEquals(file_list, [file_path])
466 file_list = [] 494 file_list = []
467 scm.diff(options, self.args, file_list) 495 scm.diff(options, self.args, file_list)
468 self.assertEquals(file_list, []) 496 self.assertEquals(file_list, [])
469 self.assertEquals(self.GetGitRev(self.base_path), 497 self.assertEquals(scm.revinfo(options, self.args, None),
470 '069c602044c5388d2d15c3f875b057c852003458') 498 '069c602044c5388d2d15c3f875b057c852003458')
471 499
472 def testRevertNew(self): 500 def testRevertNew(self):
473 if not self.enabled: 501 if not self.enabled:
474 return 502 return
475 options = self.Options() 503 options = self.Options()
476 file_path = os.path.join(self.base_path, 'c') 504 file_path = os.path.join(self.base_path, 'c')
477 f = open(file_path, 'w') 505 f = open(file_path, 'w')
478 f.writelines('new\n') 506 f.writelines('new\n')
479 f.close() 507 f.close()
480 subprocess.Popen(['git', 'add', 'c'], stdout=subprocess.PIPE, 508 subprocess.Popen(['git', 'add', 'c'], stdout=subprocess.PIPE,
481 stderr=subprocess.STDOUT, cwd=self.base_path).communicate() 509 stderr=subprocess.STDOUT, cwd=self.base_path).communicate()
482 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 510 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
483 relpath=self.relpath) 511 relpath=self.relpath)
484 file_list = [] 512 file_list = []
485 scm.revert(options, self.args, file_list) 513 scm.revert(options, self.args, file_list)
486 self.assertEquals(file_list, [file_path]) 514 self.assertEquals(file_list, [file_path])
487 file_list = [] 515 file_list = []
488 scm.diff(options, self.args, file_list) 516 scm.diff(options, self.args, file_list)
489 self.assertEquals(file_list, []) 517 self.assertEquals(file_list, [])
490 self.assertEquals(self.GetGitRev(self.base_path), 518 self.assertEquals(scm.revinfo(options, self.args, None),
491 '069c602044c5388d2d15c3f875b057c852003458') 519 '069c602044c5388d2d15c3f875b057c852003458')
492 520
493 def testStatusNew(self): 521 def testStatusNew(self):
494 if not self.enabled: 522 if not self.enabled:
495 return 523 return
496 options = self.Options() 524 options = self.Options()
497 file_path = os.path.join(self.base_path, 'a') 525 file_path = os.path.join(self.base_path, 'a')
498 open(file_path, 'a').writelines('touched\n') 526 open(file_path, 'a').writelines('touched\n')
499 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 527 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
500 relpath=self.relpath) 528 relpath=self.relpath)
(...skipping 25 matching lines...) Expand all
526 relpath = 'foo' 554 relpath = 'foo'
527 base_path = os.path.join(root_dir, relpath) 555 base_path = os.path.join(root_dir, relpath)
528 url = os.path.join(self.root_dir, self.relpath, '.git') 556 url = os.path.join(self.root_dir, self.relpath, '.git')
529 try: 557 try:
530 scm = gclient_scm.CreateSCM(url=url, root_dir=root_dir, 558 scm = gclient_scm.CreateSCM(url=url, root_dir=root_dir,
531 relpath=relpath) 559 relpath=relpath)
532 file_list = [] 560 file_list = []
533 scm.update(options, (), file_list) 561 scm.update(options, (), file_list)
534 self.assertEquals(len(file_list), 2) 562 self.assertEquals(len(file_list), 2)
535 self.assert_(os.path.isfile(os.path.join(base_path, 'a'))) 563 self.assert_(os.path.isfile(os.path.join(base_path, 'a')))
536 self.assertEquals(self.GetGitRev(base_path), 564 self.assertEquals(scm.revinfo(options, (), None),
537 '069c602044c5388d2d15c3f875b057c852003458') 565 '069c602044c5388d2d15c3f875b057c852003458')
538 finally: 566 finally:
539 shutil.rmtree(root_dir) 567 shutil.rmtree(root_dir)
540 568
541 def testUpdateUpdate(self): 569 def testUpdateUpdate(self):
542 if not self.enabled: 570 if not self.enabled:
543 return 571 return
544 options = self.Options() 572 options = self.Options()
545 expected_file_list = [os.path.join(self.base_path, x) for x in ['a', 'b']] 573 expected_file_list = [os.path.join(self.base_path, x) for x in ['a', 'b']]
546 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 574 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
547 relpath=self.relpath) 575 relpath=self.relpath)
548 file_list = [] 576 file_list = []
549 scm.update(options, (), file_list) 577 scm.update(options, (), file_list)
550 self.assertEquals(self.GetGitRev(self.base_path), 578 self.assertEquals(file_list, expected_file_list)
579 self.assertEquals(scm.revinfo(options, (), None),
551 'a7142dc9f0009350b96a11f372b6ea658592aa95') 580 'a7142dc9f0009350b96a11f372b6ea658592aa95')
552 581
582 def testRevinfo(self):
583 if not self.enabled:
584 return
585 options = self.Options()
586 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
587 relpath=self.relpath)
588 rev_info = scm.revinfo(options, (), None)
589 self.assertEquals(rev_info, '069c602044c5388d2d15c3f875b057c852003458')
590
553 591
554 class RunSVNTestCase(gclient_test.BaseTestCase): 592 class RunSVNTestCase(gclient_test.BaseTestCase):
555 def testRunSVN(self): 593 def testRunSVN(self):
556 param2 = 'bleh' 594 param2 = 'bleh'
557 self.mox.StubOutWithMock(gclient_utils, 'SubprocessCall') 595 self.mox.StubOutWithMock(gclient_utils, 'SubprocessCall')
558 gclient_utils.SubprocessCall(['svn', 'foo', 'bar'], param2).AndReturn(None) 596 gclient_utils.SubprocessCall(['svn', 'foo', 'bar'], param2).AndReturn(None)
559 self.mox.ReplayAll() 597 self.mox.ReplayAll()
560 gclient_scm.RunSVN(['foo', 'bar'], param2) 598 gclient_scm.RunSVN(['foo', 'bar'], param2)
561 599
562 600
563 if __name__ == '__main__': 601 if __name__ == '__main__':
564 unittest.main() 602 unittest.main()
565 603
566 # vim: ts=2:sw=2:tw=80:et: 604 # vim: ts=2:sw=2:tw=80:et:
OLDNEW
« gclient.py ('K') | « gclient_scm.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698