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

Side by Side Diff: tests/git_cl_test.py

Issue 1777603002: Gerrit git cl upload: record issue id for a branch. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@G050
Patch Set: Fix presubmit + improve error message. Created 4 years, 9 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
« git_cl.py ('K') | « 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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 75
76 class TestGitCl(TestCase): 76 class TestGitCl(TestCase):
77 def setUp(self): 77 def setUp(self):
78 super(TestGitCl, self).setUp() 78 super(TestGitCl, self).setUp()
79 self.calls = [] 79 self.calls = []
80 self._calls_done = 0 80 self._calls_done = 0
81 self.mock(subprocess2, 'call', self._mocked_call) 81 self.mock(subprocess2, 'call', self._mocked_call)
82 self.mock(subprocess2, 'check_call', self._mocked_call) 82 self.mock(subprocess2, 'check_call', self._mocked_call)
83 self.mock(subprocess2, 'check_output', self._mocked_call) 83 self.mock(subprocess2, 'check_output', self._mocked_call)
84 self.mock(subprocess2, 'communicate', self._mocked_call) 84 self.mock(subprocess2, 'communicate', self._mocked_call)
85 self.mock(git_cl.gclient_utils, 'CheckCallAndFilter', self._mocked_call)
85 self.mock(git_common, 'is_dirty_git_tree', lambda x: False) 86 self.mock(git_common, 'is_dirty_git_tree', lambda x: False)
86 self.mock(git_common, 'get_or_create_merge_base', 87 self.mock(git_common, 'get_or_create_merge_base',
87 lambda *a: ( 88 lambda *a: (
88 self._mocked_call(['get_or_create_merge_base']+list(a)))) 89 self._mocked_call(['get_or_create_merge_base']+list(a))))
89 self.mock(git_cl, 'BranchExists', lambda _: True) 90 self.mock(git_cl, 'BranchExists', lambda _: True)
90 self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: '') 91 self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: '')
91 self.mock(git_cl, 'ask_for_data', self._mocked_call) 92 self.mock(git_cl, 'ask_for_data', self._mocked_call)
92 self.mock(git_cl.presubmit_support, 'DoPresubmitChecks', PresubmitMock) 93 self.mock(git_cl.presubmit_support, 'DoPresubmitChecks', PresubmitMock)
93 self.mock(git_cl.rietveld, 'Rietveld', RietveldMock) 94 self.mock(git_cl.rietveld, 'Rietveld', RietveldMock)
94 self.mock(git_cl.rietveld, 'CachingRietveld', RietveldMock) 95 self.mock(git_cl.rietveld, 'CachingRietveld', RietveldMock)
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 @classmethod 314 @classmethod
314 def _dcommit_calls_normal(cls): 315 def _dcommit_calls_normal(cls):
315 return [ 316 return [
316 ((['git', 'rev-parse', '--show-cdup'],), ''), 317 ((['git', 'rev-parse', '--show-cdup'],), ''),
317 ((['git', 'rev-parse', 'HEAD'],), 318 ((['git', 'rev-parse', 'HEAD'],),
318 '00ff397798ea57439712ed7e04ab96e13969ef40'), 319 '00ff397798ea57439712ed7e04ab96e13969ef40'),
319 ((['git', 320 ((['git',
320 'diff', '--name-status', '--no-renames', '-r', 'fake_ancestor_sha...', 321 'diff', '--name-status', '--no-renames', '-r', 'fake_ancestor_sha...',
321 '.'],), 322 '.'],),
322 'M\tPRESUBMIT.py'), 323 'M\tPRESUBMIT.py'),
324 ((['git', 'config', 'gerrit.host'],), ''),
323 ((['git', 325 ((['git',
324 'config', 'branch.working.rietveldissue'],), '12345'), 326 'config', 'branch.working.rietveldissue'],), '12345'),
325 ((['git', 327 ((['git',
326 'config', 'branch.working.rietveldpatchset'],), '31137'), 328 'config', 'branch.working.rietveldpatchset'],), '31137'),
327 ((['git', 'config', 'branch.working.rietveldserver'],), 329 ((['git', 'config', 'branch.working.rietveldserver'],),
328 'codereview.example.com'), 330 'codereview.example.com'),
329 ((['git', 'config', 'user.email'],), 'author@example.com'), 331 ((['git', 'config', 'user.email'],), 'author@example.com'),
330 ((['git', 'config', 'rietveld.tree-status-url'],), ''), 332 ((['git', 'config', 'rietveld.tree-status-url'],), ''),
331 ] 333 ]
332 334
333 @classmethod 335 @classmethod
334 def _dcommit_calls_bypassed(cls): 336 def _dcommit_calls_bypassed(cls):
335 return [ 337 return [
338 ((['git', 'config', 'gerrit.host'],), ''),
336 ((['git', 339 ((['git',
337 'config', 'branch.working.rietveldissue'],), '12345'), 340 'config', 'branch.working.rietveldissue'],), '12345'),
338 ((['git', 'config', 'branch.working.rietveldserver'],), 341 ((['git', 'config', 'branch.working.rietveldserver'],),
339 'codereview.example.com'), 342 'codereview.example.com'),
340 ] 343 ]
341 344
342 @classmethod 345 @classmethod
343 def _dcommit_calls_3(cls): 346 def _dcommit_calls_3(cls):
344 return [ 347 return [
345 ((['git', 348 ((['git',
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 ((['get_or_create_merge_base', 'master', 'master'],), 563 ((['get_or_create_merge_base', 'master', 'master'],),
561 'fake_ancestor_sha'), 564 'fake_ancestor_sha'),
562 ((['git', 'config', 'gerrit.host'],), 'True'), 565 ((['git', 'config', 'gerrit.host'],), 'True'),
563 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [ 566 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [
564 ((['git', 'rev-parse', '--show-cdup'],), ''), 567 ((['git', 'rev-parse', '--show-cdup'],), ''),
565 ((['git', 'rev-parse', 'HEAD'],), '12345'), 568 ((['git', 'rev-parse', 'HEAD'],), '12345'),
566 ((['git', 569 ((['git',
567 'diff', '--name-status', '--no-renames', '-r', 570 'diff', '--name-status', '--no-renames', '-r',
568 'fake_ancestor_sha...', '.'],), 571 'fake_ancestor_sha...', '.'],),
569 'M\t.gitignore\n'), 572 'M\t.gitignore\n'),
570 ((['git', 'config', 'branch.master.rietveldissue'],), ''), 573 ((['git', 'config', 'branch.master.gerritissue'],), ''),
571 ((['git', 574 ((['git',
572 'config', 'branch.master.rietveldpatchset'],), ''), 575 'config', 'branch.master.rietveldpatchset'],), ''),
573 ((['git', 576 ((['git',
574 'log', '--pretty=format:%s%n%n%b', 'fake_ancestor_sha...'],), 577 'log', '--pretty=format:%s%n%n%b', 'fake_ancestor_sha...'],),
575 'foo'), 578 'foo'),
576 ((['git', 'config', 'user.email'],), 'me@example.com'), 579 ((['git', 'config', 'user.email'],), 'me@example.com'),
577 ((['git', 580 ((['git',
578 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', 581 'diff', '--no-ext-diff', '--stat', '--find-copies-harder',
579 '-l100000', '-C50', 'fake_ancestor_sha', 'HEAD'],), 582 '-l100000', '-C50', 'fake_ancestor_sha', 'HEAD'],),
580 '+dat'), 583 '+dat'),
581 ] 584 ]
582 585
583 @classmethod 586 @classmethod
584 def _gerrit_upload_calls(cls, description, reviewers, squash, 587 def _gerrit_upload_calls(cls, description, reviewers, squash,
585 expected_upstream_ref='origin/refs/heads/master', 588 expected_upstream_ref='origin/refs/heads/master',
586 post_amend_description=None): 589 post_amend_description=None):
587 if post_amend_description is None: 590 if post_amend_description is None:
588 post_amend_description = description 591 post_amend_description = description
589 calls = [ 592 calls = [
590 ((['git', 'config', '--bool', 'gerrit.squash-uploads'],), 'false'), 593 ((['git', 'config', '--bool', 'gerrit.squash-uploads'],), 'false'),
591 ((['git', 'log', '--pretty=format:%s\n\n%b', 594 ((['git', 'log', '--pretty=format:%s\n\n%b',
592 'fake_ancestor_sha..HEAD'],), 595 'fake_ancestor_sha..HEAD'],),
593 description) 596 description)
594 ] 597 ]
595 if not git_footers.get_footer_change_id(description) and not squash: 598 if not git_footers.get_footer_change_id(description) and not squash:
596 # TODOOOOO
597 calls += [ 599 calls += [
598 # DownloadGerritHook(False) 600 # DownloadGerritHook(False)
599 ((False, ), 601 ((False, ),
600 ''), 602 ''),
601 # Amending of commit message to get the Change-Id. 603 # Amending of commit message to get the Change-Id.
602 ((['git', 'log', '--pretty=format:%s\n\n%b', 604 ((['git', 'log', '--pretty=format:%s\n\n%b',
603 'fake_ancestor_sha..HEAD'],), 605 'fake_ancestor_sha..HEAD'],),
604 description), 606 description),
605 ((['git', 'commit', '--amend', '-m', description],), 607 ((['git', 'commit', '--amend', '-m', description],),
606 ''), 608 ''),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 receive_pack += '--cc=joe@example.com' # from watch list 640 receive_pack += '--cc=joe@example.com' # from watch list
639 if reviewers: 641 if reviewers:
640 receive_pack += ' ' 642 receive_pack += ' '
641 receive_pack += ' '.join( 643 receive_pack += ' '.join(
642 '--reviewer=' + email for email in sorted(reviewers)) 644 '--reviewer=' + email for email in sorted(reviewers))
643 receive_pack += '' 645 receive_pack += ''
644 calls += [ 646 calls += [
645 ((['git', 647 ((['git',
646 'push', receive_pack, 'origin', 648 'push', receive_pack, 'origin',
647 ref_to_push + ':refs/for/refs/heads/master'],), 649 ref_to_push + ':refs/for/refs/heads/master'],),
648 '') 650 ('remote:\n'
651 'remote: Processing changes: (\)\n'
652 'remote: Processing changes: (|)\n'
653 'remote: Processing changes: (/)\n'
654 'remote: Processing changes: (-)\n'
655 'remote: Processing changes: new: 1 (/)\n'
656 'remote: Processing changes: new: 1, done\n'
657 'remote:\n'
658 'remote: New Changes:\n'
659 'remote: https://chromium-review.googlesource.com/123456 XXX.\n'
660 'remote:\n'
661 'To https://chromium.googlesource.com/yyy/zzz\n'
662 ' * [new branch] hhhh -> refs/for/refs/heads/master\n')),
649 ] 663 ]
650 if squash: 664 if squash:
651 calls += [ 665 calls += [
666 ((['git', 'config', 'branch.master.gerritissue', '123456'],), ''),
652 ((['git', 'rev-parse', 'HEAD'],), 'abcdef0123456789'), 667 ((['git', 'rev-parse', 'HEAD'],), 'abcdef0123456789'),
653 ((['git', 'update-ref', '-m', 'Uploaded abcdef0123456789', 668 ((['git', 'update-ref', '-m', 'Uploaded abcdef0123456789',
654 'refs/heads/git_cl_uploads/master', 'abcdef0123456789'],), 669 'refs/heads/git_cl_uploads/master', 'abcdef0123456789'],),
655 '') 670 '')
656 ] 671 ]
657 calls += cls._git_post_upload_calls() 672 calls += cls._git_post_upload_calls()
658 return calls 673 return calls
659 674
660 def _run_gerrit_upload_test( 675 def _run_gerrit_upload_test(
661 self, 676 self,
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 self.calls += [ 917 self.calls += [
903 ((['git', 'apply', '--index', '-p0', '--3way'],), '', 918 ((['git', 'apply', '--index', '-p0', '--3way'],), '',
904 subprocess2.CalledProcessError(1, '', '', '', '')), 919 subprocess2.CalledProcessError(1, '', '', '', '')),
905 ] 920 ]
906 self.assertNotEqual(git_cl.main(['patch', '123456']), 0) 921 self.assertNotEqual(git_cl.main(['patch', '123456']), 0)
907 922
908 if __name__ == '__main__': 923 if __name__ == '__main__':
909 git_cl.logging.basicConfig( 924 git_cl.logging.basicConfig(
910 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR) 925 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR)
911 unittest.main() 926 unittest.main()
OLDNEW
« git_cl.py ('K') | « git_cl.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698