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

Side by Side Diff: tests/git_cl_test.py

Issue 224703002: Use get_or_create_merge_base in git-cl-upload to correctly deal with rebased (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: fix tests' Created 6 years, 8 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 | « 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
11 import sys 11 import sys
12 import unittest 12 import unittest
13 13
14 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 14 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
15 15
16 from testing_support.auto_stub import TestCase 16 from testing_support.auto_stub import TestCase
17 17
18 import git_cl 18 import git_cl
19 import git_common
19 import subprocess2 20 import subprocess2
20 21
21 22
22 class PresubmitMock(object): 23 class PresubmitMock(object):
23 def __init__(self, *args, **kwargs): 24 def __init__(self, *args, **kwargs):
24 self.reviewers = [] 25 self.reviewers = []
25 @staticmethod 26 @staticmethod
26 def should_continue(): 27 def should_continue():
27 return True 28 return True
28 29
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 class TestGitCl(TestCase): 70 class TestGitCl(TestCase):
70 def setUp(self): 71 def setUp(self):
71 super(TestGitCl, self).setUp() 72 super(TestGitCl, self).setUp()
72 self.calls = [] 73 self.calls = []
73 self._calls_done = 0 74 self._calls_done = 0
74 self.mock(subprocess2, 'call', self._mocked_call) 75 self.mock(subprocess2, 'call', self._mocked_call)
75 self.mock(subprocess2, 'check_call', self._mocked_call) 76 self.mock(subprocess2, 'check_call', self._mocked_call)
76 self.mock(subprocess2, 'check_output', self._mocked_call) 77 self.mock(subprocess2, 'check_output', self._mocked_call)
77 self.mock(subprocess2, 'communicate', self._mocked_call) 78 self.mock(subprocess2, 'communicate', self._mocked_call)
78 self.mock(subprocess2, 'Popen', self._mocked_call) 79 self.mock(subprocess2, 'Popen', self._mocked_call)
80 self.mock(git_common, 'get_or_create_merge_base',
81 lambda *a: (
82 self._mocked_call(['get_or_create_merge_base']+list(a))))
79 self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: '') 83 self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: '')
80 self.mock(git_cl, 'ask_for_data', self._mocked_call) 84 self.mock(git_cl, 'ask_for_data', self._mocked_call)
81 self.mock(git_cl.breakpad, 'post', self._mocked_call) 85 self.mock(git_cl.breakpad, 'post', self._mocked_call)
82 self.mock(git_cl.breakpad, 'SendStack', self._mocked_call) 86 self.mock(git_cl.breakpad, 'SendStack', self._mocked_call)
83 self.mock(git_cl.presubmit_support, 'DoPresubmitChecks', PresubmitMock) 87 self.mock(git_cl.presubmit_support, 'DoPresubmitChecks', PresubmitMock)
84 self.mock(git_cl.rietveld, 'Rietveld', RietveldMock) 88 self.mock(git_cl.rietveld, 'Rietveld', RietveldMock)
85 self.mock(git_cl.rietveld, 'CachingRietveld', RietveldMock) 89 self.mock(git_cl.rietveld, 'CachingRietveld', RietveldMock)
86 self.mock(git_cl.upload, 'RealMain', self.fail) 90 self.mock(git_cl.upload, 'RealMain', self.fail)
87 self.mock(git_cl.watchlists, 'Watchlists', WatchlistsMock) 91 self.mock(git_cl.watchlists, 'Watchlists', WatchlistsMock)
88 # It's important to reset settings to not have inter-tests interference. 92 # It's important to reset settings to not have inter-tests interference.
89 git_cl.settings = None 93 git_cl.settings = None
90 94
91 def tearDown(self): 95 def tearDown(self):
92 if not self.has_failed(): 96 if not self.has_failed():
93 self.assertEquals([], self.calls) 97 self.assertEquals([], self.calls)
94 super(TestGitCl, self).tearDown() 98 super(TestGitCl, self).tearDown()
95 99
96 def _mocked_call(self, *args, **kwargs): 100 def _mocked_call(self, *args, **_kwargs):
97 self.assertTrue( 101 self.assertTrue(
98 self.calls, 102 self.calls,
99 '@%d Expected: <Missing> Actual: %r' % (self._calls_done, args)) 103 '@%d Expected: <Missing> Actual: %r' % (self._calls_done, args))
100 expected_args, result = self.calls.pop(0) 104 expected_args, result = self.calls.pop(0)
101 # Also logs otherwise it could get caught in a try/finally and be hard to 105 # Also logs otherwise it could get caught in a try/finally and be hard to
102 # diagnose. 106 # diagnose.
103 if expected_args != args: 107 if expected_args != args:
104 msg = '@%d Expected: %r Actual: %r' % ( 108 msg = '@%d Expected: %r Actual: %r' % (
105 self._calls_done, expected_args, args) 109 self._calls_done, expected_args, args)
106 git_cl.logging.error(msg) 110 git_cl.logging.error(msg)
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 'codereview.example.com'), 155 'codereview.example.com'),
152 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 156 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
153 similarity_call, 157 similarity_call,
154 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 158 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
155 find_copies_call, 159 find_copies_call,
156 ((['git', 'update-index', '--refresh', '-q'],), ''), 160 ((['git', 'update-index', '--refresh', '-q'],), ''),
157 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''), 161 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''),
158 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 162 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
159 ((['git', 'config', 'branch.master.merge'],), 'master'), 163 ((['git', 'config', 'branch.master.merge'],), 'master'),
160 ((['git', 'config', 'branch.master.remote'],), 'origin'), 164 ((['git', 'config', 'branch.master.remote'],), 'origin'),
161 ((['git', 'merge-base', 'master', 'HEAD'],), 165 ((['get_or_create_merge_base', 'master', 'master'],),
162 'fake_ancestor_sha'), 166 'fake_ancestor_sha'),
163 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [ 167 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [
164 ((['git', 'rev-parse', '--show-cdup'],), ''), 168 ((['git', 'rev-parse', '--show-cdup'],), ''),
165 ((['git', 'rev-parse', 'HEAD'],), '12345'), 169 ((['git', 'rev-parse', 'HEAD'],), '12345'),
166 ((['git', 'diff', '--name-status', '--no-renames', '-r', 170 ((['git', 'diff', '--name-status', '--no-renames', '-r',
167 'fake_ancestor_sha...', '.'],), 171 'fake_ancestor_sha...', '.'],),
168 'M\t.gitignore\n'), 172 'M\t.gitignore\n'),
169 ((['git', 'config', 'branch.master.rietveldissue'],), ''), 173 ((['git', 'config', 'branch.master.rietveldissue'],), ''),
170 ((['git', 'config', 'branch.master.rietveldpatchset'],), 174 ((['git', 'config', 'branch.master.rietveldpatchset'],),
171 ''), 175 ''),
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 ((['git', 'config', '--int', '--get', 535 ((['git', 'config', '--int', '--get',
532 'branch.master.git-cl-similarity'],), ''), 536 'branch.master.git-cl-similarity'],), ''),
533 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 537 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
534 ((['git', 'config', '--int', '--get', 538 ((['git', 'config', '--int', '--get',
535 'branch.master.git-find-copies'],), ''), 539 'branch.master.git-find-copies'],), ''),
536 ((['git', 'update-index', '--refresh', '-q'],), ''), 540 ((['git', 'update-index', '--refresh', '-q'],), ''),
537 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''), 541 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''),
538 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 542 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
539 ((['git', 'config', 'branch.master.merge'],), 'master'), 543 ((['git', 'config', 'branch.master.merge'],), 'master'),
540 ((['git', 'config', 'branch.master.remote'],), 'origin'), 544 ((['git', 'config', 'branch.master.remote'],), 'origin'),
541 ((['git', 545 ((['get_or_create_merge_base', 'master', 'master'],),
542 'merge-base', 'master', 'HEAD'],), 'fake_ancestor_sha'), 546 'fake_ancestor_sha'),
543 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [ 547 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [
544 ((['git', 'rev-parse', '--show-cdup'],), ''), 548 ((['git', 'rev-parse', '--show-cdup'],), ''),
545 ((['git', 'rev-parse', 'HEAD'],), '12345'), 549 ((['git', 'rev-parse', 'HEAD'],), '12345'),
546 ((['git', 550 ((['git',
547 'diff', '--name-status', '--no-renames', '-r', 551 'diff', '--name-status', '--no-renames', '-r',
548 'fake_ancestor_sha...', '.'],), 552 'fake_ancestor_sha...', '.'],),
549 'M\t.gitignore\n'), 553 'M\t.gitignore\n'),
550 ((['git', 'config', 'branch.master.rietveldissue'],), ''), 554 ((['git', 'config', 'branch.master.rietveldissue'],), ''),
551 ((['git', 555 ((['git',
552 'config', 'branch.master.rietveldpatchset'],), ''), 556 'config', 'branch.master.rietveldpatchset'],), ''),
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 obj = git_cl.ChangeDescription(orig) 741 obj = git_cl.ChangeDescription(orig)
738 obj.update_reviewers(reviewers) 742 obj.update_reviewers(reviewers)
739 actual.append(obj.description) 743 actual.append(obj.description)
740 self.assertEqual(expected, actual) 744 self.assertEqual(expected, actual)
741 745
742 746
743 if __name__ == '__main__': 747 if __name__ == '__main__':
744 git_cl.logging.basicConfig( 748 git_cl.logging.basicConfig(
745 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR) 749 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR)
746 unittest.main() 750 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