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

Side by Side Diff: tests/git_cl_test.py

Issue 1110293002: Make git cl upload correctly track upstream refs when uploading to Gerrit (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 5 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 | Annotate | Revision Log
« no previous file with comments | « git_cl.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) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 """Unit tests for git_cl.py.""" 6 """Unit tests for git_cl.py."""
7 7
8 import os 8 import os
9 import StringIO 9 import StringIO
10 import stat 10 import stat
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 'log', '--pretty=format:%s%n%n%b', 'fake_ancestor_sha...'],), 568 'log', '--pretty=format:%s%n%n%b', 'fake_ancestor_sha...'],),
569 'foo'), 569 'foo'),
570 ((['git', 'config', 'user.email'],), 'me@example.com'), 570 ((['git', 'config', 'user.email'],), 'me@example.com'),
571 ((['git', 571 ((['git',
572 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', 572 'diff', '--no-ext-diff', '--stat', '--find-copies-harder',
573 '-l100000', '-C50', 'fake_ancestor_sha', 'HEAD'],), 573 '-l100000', '-C50', 'fake_ancestor_sha', 'HEAD'],),
574 '+dat'), 574 '+dat'),
575 ] 575 ]
576 576
577 @staticmethod 577 @staticmethod
578 def _gerrit_upload_calls(description, reviewers, squash): 578 def _gerrit_upload_calls(description, reviewers, squash,
579 expected_upstream_ref='origin/refs/heads/master'):
luqui 2015/04/28 23:56:24 Yes yes this is awful. My alternatives: 1. Dig i
Mike Wittman 2015/05/01 01:36:29 I went the same way attempting to get the GetTarge
579 calls = [ 580 calls = [
580 ((['git', 'log', '--pretty=format:%s\n\n%b', 581 ((['git', 'log', '--pretty=format:%s\n\n%b',
581 'fake_ancestor_sha..HEAD'],), 582 'fake_ancestor_sha..HEAD'],),
582 description) 583 description)
583 ] 584 ]
584 if git_cl.CHANGE_ID not in description: 585 if git_cl.CHANGE_ID not in description:
585 calls += [ 586 calls += [
586 ((['git', 'log', '--pretty=format:%s\n\n%b', 587 ((['git', 'log', '--pretty=format:%s\n\n%b',
587 'fake_ancestor_sha..HEAD'],), 588 'fake_ancestor_sha..HEAD'],),
588 description), 589 description),
(...skipping 18 matching lines...) Expand all
607 ((['git', 'rev-parse', 'HEAD:'],), 608 ((['git', 'rev-parse', 'HEAD:'],),
608 '0123456789abcdef'), 609 '0123456789abcdef'),
609 ((['git', 'commit-tree', '0123456789abcdef', '-p', 610 ((['git', 'commit-tree', '0123456789abcdef', '-p',
610 'origin/master', '-m', 'd'],), 611 'origin/master', '-m', 'd'],),
611 ref_to_push), 612 ref_to_push),
612 ] 613 ]
613 else: 614 else:
614 ref_to_push = 'HEAD' 615 ref_to_push = 'HEAD'
615 616
616 calls += [ 617 calls += [
617 ((['git', 'rev-list', 'origin/master..' + ref_to_push],), ''), 618 ((['git', 'rev-list', expected_upstream_ref + '..' + ref_to_push],), '') ,
618 ((['git', 'config', 'rietveld.cc'],), '') 619 ((['git', 'config', 'rietveld.cc'],), '')
619 ] 620 ]
620 receive_pack = '--receive-pack=git receive-pack ' 621 receive_pack = '--receive-pack=git receive-pack '
621 receive_pack += '--cc=joe@example.com' # from watch list 622 receive_pack += '--cc=joe@example.com' # from watch list
622 if reviewers: 623 if reviewers:
623 receive_pack += ' ' 624 receive_pack += ' '
624 receive_pack += ' '.join( 625 receive_pack += ' '.join(
625 '--reviewer=' + email for email in sorted(reviewers)) 626 '--reviewer=' + email for email in sorted(reviewers))
626 receive_pack += '' 627 receive_pack += ''
627 calls += [ 628 calls += [
628 ((['git', 629 ((['git',
629 'push', receive_pack, 'origin', ref_to_push + ':refs/for/master'],), 630 'push', receive_pack, 'origin',
631 ref_to_push + ':refs/for/refs/heads/master'],),
630 '') 632 '')
631 ] 633 ]
632 if squash: 634 if squash:
633 calls += [ 635 calls += [
634 ((['git', 'rev-parse', 'HEAD'],), 'abcdef0123456789'), 636 ((['git', 'rev-parse', 'HEAD'],), 'abcdef0123456789'),
635 ((['git', 'update-ref', '-m', 'Uploaded abcdef0123456789', 637 ((['git', 'update-ref', '-m', 'Uploaded abcdef0123456789',
636 'refs/heads/git_cl_uploads/master', 'abcdef0123456789'],), 638 'refs/heads/git_cl_uploads/master', 'abcdef0123456789'],),
637 '') 639 '')
638 ] 640 ]
639 641
640 return calls 642 return calls
641 643
642 def _run_gerrit_upload_test( 644 def _run_gerrit_upload_test(
643 self, 645 self,
644 upload_args, 646 upload_args,
645 description, 647 description,
646 reviewers, 648 reviewers,
647 squash=False): 649 squash=False,
650 expected_upstream_ref='origin/refs/heads/master'):
648 """Generic gerrit upload test framework.""" 651 """Generic gerrit upload test framework."""
649 self.calls = self._gerrit_base_calls() 652 self.calls = self._gerrit_base_calls()
650 self.calls += self._gerrit_upload_calls(description, reviewers, squash) 653 self.calls += self._gerrit_upload_calls(
654 description, reviewers, squash,
655 expected_upstream_ref=expected_upstream_ref)
651 git_cl.main(['upload'] + upload_args) 656 git_cl.main(['upload'] + upload_args)
652 657
653 def test_gerrit_upload_without_change_id(self): 658 def test_gerrit_upload_without_change_id(self):
654 self._run_gerrit_upload_test( 659 self._run_gerrit_upload_test(
655 [], 660 [],
656 'desc\n\nBUG=\n', 661 'desc\n\nBUG=\n',
657 []) 662 [])
658 663
659 def test_gerrit_no_reviewer(self): 664 def test_gerrit_no_reviewer(self):
660 self._run_gerrit_upload_test( 665 self._run_gerrit_upload_test(
(...skipping 12 matching lines...) Expand all
673 [], 678 [],
674 'desc\nTBR=reviewer@example.com\nBUG=\nR=another@example.com\n' 679 'desc\nTBR=reviewer@example.com\nBUG=\nR=another@example.com\n'
675 'Change-Id:123456789\n', 680 'Change-Id:123456789\n',
676 ['reviewer@example.com', 'another@example.com']) 681 ['reviewer@example.com', 'another@example.com'])
677 682
678 def test_gerrit_upload_squash(self): 683 def test_gerrit_upload_squash(self):
679 self._run_gerrit_upload_test( 684 self._run_gerrit_upload_test(
680 ['--squash'], 685 ['--squash'],
681 'desc\n\nBUG=\nChange-Id:123456789\n', 686 'desc\n\nBUG=\nChange-Id:123456789\n',
682 [], 687 [],
683 squash=True) 688 squash=True,
689 expected_upstream_ref='origin/master')
684 690
685 def test_config_gerrit_download_hook(self): 691 def test_config_gerrit_download_hook(self):
686 self.mock(git_cl, 'FindCodereviewSettingsFile', CodereviewSettingsFileMock) 692 self.mock(git_cl, 'FindCodereviewSettingsFile', CodereviewSettingsFileMock)
687 def ParseCodereviewSettingsContent(content): 693 def ParseCodereviewSettingsContent(content):
688 keyvals = {} 694 keyvals = {}
689 keyvals['CODE_REVIEW_SERVER'] = 'gerrit.chromium.org' 695 keyvals['CODE_REVIEW_SERVER'] = 'gerrit.chromium.org'
690 keyvals['GERRIT_HOST'] = 'gerrit.chromium.org' 696 keyvals['GERRIT_HOST'] = 'gerrit.chromium.org'
691 keyvals['GERRIT_PORT'] = '29418' 697 keyvals['GERRIT_PORT'] = '29418'
692 return keyvals 698 return keyvals
693 self.mock(git_cl.gclient_utils, 'ParseCodereviewSettingsContent', 699 self.mock(git_cl.gclient_utils, 'ParseCodereviewSettingsContent',
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 # Check target refs for pending prefix. 856 # Check target refs for pending prefix.
851 self.assertEqual('prefix/heads/master', 857 self.assertEqual('prefix/heads/master',
852 git_cl.GetTargetRef('origin', 'refs/remotes/origin/master', 858 git_cl.GetTargetRef('origin', 'refs/remotes/origin/master',
853 None, 'prefix/')) 859 None, 'prefix/'))
854 860
855 861
856 if __name__ == '__main__': 862 if __name__ == '__main__':
857 git_cl.logging.basicConfig( 863 git_cl.logging.basicConfig(
858 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR) 864 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR)
859 unittest.main() 865 unittest.main()
OLDNEW
« no previous file with comments | « git_cl.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698