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

Side by Side Diff: tests/git_cl_test.py

Issue 11262057: git_cl sanity checks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 8 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 | 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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 '@%d Expected: %r Actual: %r' % ( 90 '@%d Expected: %r Actual: %r' % (
91 self._calls_done, expected_args, args)) 91 self._calls_done, expected_args, args))
92 self._calls_done += 1 92 self._calls_done += 1
93 return result 93 return result
94 94
95 @classmethod 95 @classmethod
96 def _upload_calls(cls, similarity, find_copies): 96 def _upload_calls(cls, similarity, find_copies):
97 return (cls._git_base_calls(similarity, find_copies) + 97 return (cls._git_base_calls(similarity, find_copies) +
98 cls._git_upload_calls()) 98 cls._git_upload_calls())
99 99
100 @staticmethod 100 @classmethod
101 def _git_base_calls(similarity, find_copies): 101 def _git_base_calls(cls, similarity, find_copies):
102 if similarity is None: 102 if similarity is None:
103 similarity = '50' 103 similarity = '50'
104 similarity_call = ((['git', 'config', '--int', '--get', 104 similarity_call = ((['git', 'config', '--int', '--get',
105 'branch.master.git-cl-similarity'],), '') 105 'branch.master.git-cl-similarity'],), '')
106 else: 106 else:
107 similarity_call = ((['git', 'config', '--int', 107 similarity_call = ((['git', 'config', '--int',
108 'branch.master.git-cl-similarity', similarity],), '') 108 'branch.master.git-cl-similarity', similarity],), '')
109 109
110 if find_copies is None: 110 if find_copies is None:
111 find_copies = True 111 find_copies = True
112 find_copies_call = ((['git', 'config', '--int', '--get', 112 find_copies_call = ((['git', 'config', '--int', '--get',
113 'branch.master.git-find-copies'],), '') 113 'branch.master.git-find-copies'],), '')
114 else: 114 else:
115 val = str(int(find_copies)) 115 val = str(int(find_copies))
116 find_copies_call = ((['git', 'config', '--int', 116 find_copies_call = ((['git', 'config', '--int',
117 'branch.master.git-find-copies', val],), '') 117 'branch.master.git-find-copies', val],), '')
118 118
119 if find_copies: 119 if find_copies:
120 stat_call = ((['git', 'diff', '--no-ext-diff', '--stat', 120 stat_call = ((['git', 'diff', '--no-ext-diff', '--stat',
121 '--find-copies-harder', '-l100000', '-C'+similarity, 121 '--find-copies-harder', '-l100000', '-C'+similarity,
122 'master...'],), '+dat') 122 'fake_ancestor_sha'],), '+dat')
123 else: 123 else:
124 stat_call = ((['git', 'diff', '--no-ext-diff', '--stat', 124 stat_call = ((['git', 'diff', '--no-ext-diff', '--stat',
125 '-M'+similarity, 'master...'],), '+dat') 125 '-M'+similarity, 'fake_ancestor_sha'],), '+dat')
126 126
127 return [ 127 return [
128 ((['git', 'config', 'gerrit.host'],), ''), 128 ((['git', 'config', 'gerrit.host'],), ''),
129 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), 129 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'),
130 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 130 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
131 similarity_call, 131 similarity_call,
132 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 132 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
133 find_copies_call, 133 find_copies_call,
134 ((['git', 'update-index', '--refresh', '-q'],), ''), 134 ((['git', 'update-index', '--refresh', '-q'],), ''),
135 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''), 135 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''),
136 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 136 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
137 ((['git', 'config', 'branch.master.merge'],), 'master'), 137 ((['git', 'config', 'branch.master.merge'],), 'master'),
138 ((['git', 'config', 'branch.master.remote'],), 'origin'), 138 ((['git', 'config', 'branch.master.remote'],), 'origin'),
139 ((['git', 'merge-base', 'master', 'HEAD'],), 'fake_ancestor_sha'),
140 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [
139 ((['git', 'rev-parse', '--show-cdup'],), ''), 141 ((['git', 'rev-parse', '--show-cdup'],), ''),
140 ((['git', 'rev-parse', 'HEAD'],), '12345'), 142 ((['git', 'rev-parse', 'HEAD'],), '12345'),
141 ((['git', 'diff', '--name-status', '-r', 'master...', '.'],), 143 ((['git', 'diff', '--name-status', '-r', 'fake_ancestor_sha...', '.'],),
142 'M\t.gitignore\n'), 144 'M\t.gitignore\n'),
143 ((['git', 'config', 'branch.master.rietveldissue'],), ''), 145 ((['git', 'config', 'branch.master.rietveldissue'],), ''),
144 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), 146 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''),
145 ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), 147 ((['git', 'log', '--pretty=format:%s%n%n%b', 'fake_ancestor_sha...'],),
148 'foo'),
146 ((['git', 'config', 'user.email'],), 'me@example.com'), 149 ((['git', 'config', 'user.email'],), 'me@example.com'),
147 stat_call, 150 stat_call,
148 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 'desc\n'), 151 ((['git', 'log', '--pretty=format:%s\n\n%b', 'fake_ancestor_sha..'],),
152 'desc\n'),
149 ] 153 ]
150 154
151 @staticmethod 155 @classmethod
152 def _git_upload_calls(): 156 def _git_upload_calls(cls):
153 return [ 157 return [
154 ((['git', 'config', 'rietveld.cc'],), ''), 158 ((['git', 'config', 'rietveld.cc'],), ''),
155 ((['git', 'config', 'branch.master.base-url'],), ''), 159 ((['git', 'config', 'branch.master.base-url'],), ''),
156 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],), 160 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],),
157 (('', None), 0)), 161 (('', None), 0)),
158 ((['git', 'rev-parse', '--show-cdup'],), ''), 162 ((['git', 'rev-parse', '--show-cdup'],), ''),
159 ((['git', 'svn', 'info'],), ''), 163 ((['git', 'svn', 'info'],), ''),
160 ((['git', 'config', 'branch.master.rietveldissue', '1'],), ''), 164 ((['git', 'config', 'branch.master.rietveldissue', '1'],), ''),
161 ((['git', 'config', 'branch.master.rietveldserver', 165 ((['git', 'config', 'branch.master.rietveldserver',
162 'https://codereview.example.com'],), ''), 166 'https://codereview.example.com'],), ''),
163 ((['git', 'config', 'branch.master.rietveldpatchset', '2'],), ''), 167 ((['git', 'config', 'branch.master.rietveldpatchset', '2'],), ''),
164 ] 168 ]
165 169
170 @staticmethod
171 def _git_sanity_checks(diff_base, working_branch):
172 fake_ancestor = 'fake_ancestor'
173 fake_cl = 'fake_cl_for_patch'
174 return [
175 # Calls to verify branch point is ancestor
176 ((['git', 'rev-parse', '--verify', diff_base],), fake_ancestor),
177 ((['git', 'merge-base', fake_ancestor, 'HEAD'],), fake_ancestor),
178 ((['git', 'rev-list', '^' + fake_ancestor, 'HEAD'],), fake_cl),
179 # Mock a config miss (error code 1)
180 ((['git', 'config', 'gitcl.remotebranch'],), (('', None), 1)),
181 # Call to GetRemoteBranch()
182 ((['git', 'config', 'branch.%s.merge' % working_branch],),
183 'refs/heads/master'),
184 ((['git', 'config', 'branch.%s.remote' % working_branch],), 'origin'),
185 ((['git', 'rev-list', '^' + fake_ancestor,
186 'refs/remotes/origin/master'],), ''),
187 ]
188
166 @classmethod 189 @classmethod
167 def _dcommit_calls_1(cls): 190 def _dcommit_calls_1(cls):
168 return [ 191 return [
169 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],), 192 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],),
170 ((('svn-remote.svn.url svn://svn.chromium.org/chrome\n' 193 ((('svn-remote.svn.url svn://svn.chromium.org/chrome\n'
171 'svn-remote.svn.fetch trunk/src:refs/remotes/origin/master'), 194 'svn-remote.svn.fetch trunk/src:refs/remotes/origin/master'),
172 None), 195 None),
173 0)), 196 0)),
174 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), 197 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'),
175 ((['git', 'symbolic-ref', 'HEAD'],), 'refs/heads/working'), 198 ((['git', 'symbolic-ref', 'HEAD'],), 'refs/heads/working'),
(...skipping 10 matching lines...) Expand all
186 'refs/remotes/origin/master^!'],), ''), 209 'refs/remotes/origin/master^!'],), ''),
187 ((['git', 'update-index', '--refresh', '-q'],), ''), 210 ((['git', 'update-index', '--refresh', '-q'],), ''),
188 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''), 211 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''),
189 ((['git', 'rev-list', '^refs/heads/working', 212 ((['git', 'rev-list', '^refs/heads/working',
190 'refs/remotes/origin/master'],), 213 'refs/remotes/origin/master'],),
191 ''), 214 ''),
192 ((['git', 'log', '--grep=^git-svn-id:', '-1', '--pretty=format:%H'],), 215 ((['git', 'log', '--grep=^git-svn-id:', '-1', '--pretty=format:%H'],),
193 '3fc18b62c4966193eb435baabe2d18a3810ec82e'), 216 '3fc18b62c4966193eb435baabe2d18a3810ec82e'),
194 ((['git', 'rev-list', '^3fc18b62c4966193eb435baabe2d18a3810ec82e', 217 ((['git', 'rev-list', '^3fc18b62c4966193eb435baabe2d18a3810ec82e',
195 'refs/remotes/origin/master'],), ''), 218 'refs/remotes/origin/master'],), ''),
219 ((['git', 'merge-base', 'refs/remotes/origin/master', 'HEAD'],),
220 'fake_ancestor_sha'),
196 ] 221 ]
197 222
198 @classmethod 223 @classmethod
199 def _dcommit_calls_normal(cls): 224 def _dcommit_calls_normal(cls):
200 return [ 225 return [
201 ((['git', 'rev-parse', '--show-cdup'],), ''), 226 ((['git', 'rev-parse', '--show-cdup'],), ''),
202 ((['git', 'rev-parse', 'HEAD'],), 227 ((['git', 'rev-parse', 'HEAD'],),
203 '00ff397798ea57439712ed7e04ab96e13969ef40'), 228 '00ff397798ea57439712ed7e04ab96e13969ef40'),
204 ((['git', 'diff', '--name-status', '-r', 'refs/remotes/origin/master...', 229 ((['git', 'diff', '--name-status', '-r', 'fake_ancestor_sha...',
205 '.'],), 230 '.'],),
206 'M\tPRESUBMIT.py'), 231 'M\tPRESUBMIT.py'),
207 ((['git', 'config', 'branch.working.rietveldissue'],), '12345'), 232 ((['git', 'config', 'branch.working.rietveldissue'],), '12345'),
208 ((['git', 'config', 'branch.working.rietveldpatchset'],), '31137'), 233 ((['git', 'config', 'branch.working.rietveldpatchset'],), '31137'),
209 ((['git', 'config', 'branch.working.rietveldserver'],), 234 ((['git', 'config', 'branch.working.rietveldserver'],),
210 'codereview.example.com'), 235 'codereview.example.com'),
211 ((['git', 'config', 'user.email'],), 'author@example.com'), 236 ((['git', 'config', 'user.email'],), 'author@example.com'),
212 ((['git', 'config', 'rietveld.tree-status-url'],), ''), 237 ((['git', 'config', 'rietveld.tree-status-url'],), ''),
213 ] 238 ]
214 239
215 @classmethod 240 @classmethod
216 def _dcommit_calls_bypassed(cls): 241 def _dcommit_calls_bypassed(cls):
217 return [ 242 return [
218 ((['git', 'config', 'branch.working.rietveldissue'],), '12345'), 243 ((['git', 'config', 'branch.working.rietveldissue'],), '12345'),
219 ((['git', 'config', 'branch.working.rietveldserver'],), 244 ((['git', 'config', 'branch.working.rietveldserver'],),
220 'codereview.example.com'), 245 'codereview.example.com'),
221 (('GitClHooksBypassedCommit', 246 (('GitClHooksBypassedCommit',
222 'Issue https://codereview.example.com/12345 bypassed hook when ' 247 'Issue https://codereview.example.com/12345 bypassed hook when '
223 'committing'), None), 248 'committing'), None),
224 ] 249 ]
225 250
226 @classmethod 251 @classmethod
227 def _dcommit_calls_3(cls): 252 def _dcommit_calls_3(cls):
228 return [ 253 return [
229 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', 254 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder',
230 '-l100000', '-C50', 'refs/remotes/origin/master', 255 '-l100000', '-C50', 'fake_ancestor_sha',
231 'refs/heads/working'],), 256 'refs/heads/working'],),
232 (' PRESUBMIT.py | 2 +-\n' 257 (' PRESUBMIT.py | 2 +-\n'
233 ' 1 files changed, 1 insertions(+), 1 deletions(-)\n')), 258 ' 1 files changed, 1 insertions(+), 1 deletions(-)\n')),
234 (('About to commit; enter to confirm.',), None), 259 (('About to commit; enter to confirm.',), None),
235 ((['git', 'show-ref', '--quiet', '--verify', 260 ((['git', 'show-ref', '--quiet', '--verify',
236 'refs/heads/git-cl-commit'],), 261 'refs/heads/git-cl-commit'],),
237 (('', None), 0)), 262 (('', None), 0)),
238 ((['git', 'branch', '-D', 'git-cl-commit'],), ''), 263 ((['git', 'branch', '-D', 'git-cl-commit'],), ''),
239 ((['git', 'show-ref', '--quiet', '--verify', 264 ((['git', 'show-ref', '--quiet', '--verify',
240 'refs/heads/git-cl-cherry-pick'],), ''), 265 'refs/heads/git-cl-cherry-pick'],), ''),
241 ((['git', 'rev-parse', '--show-cdup'],), '\n'), 266 ((['git', 'rev-parse', '--show-cdup'],), '\n'),
242 ((['git', 'checkout', '-q', '-b', 'git-cl-commit'],), ''), 267 ((['git', 'checkout', '-q', '-b', 'git-cl-commit'],), ''),
243 ((['git', 'reset', '--soft', 'refs/remotes/origin/master'],), ''), 268 ((['git', 'reset', '--soft', 'fake_ancestor_sha'],), ''),
244 ((['git', 'commit', '-m', 269 ((['git', 'commit', '-m',
245 'Issue: 12345\n\nReview URL: https://codereview.example.com/12345'],), 270 'Issue: 12345\n\nReview URL: https://codereview.example.com/12345'],),
246 ''), 271 ''),
247 ((['git', 'svn', 'dcommit', '-C50', '--no-rebase', '--rmdir'],), 272 ((['git', 'svn', 'dcommit', '-C50', '--no-rebase', '--rmdir'],),
248 (('', None), 0)), 273 (('', None), 0)),
249 ((['git', 'checkout', '-q', 'working'],), ''), 274 ((['git', 'checkout', '-q', 'working'],), ''),
250 ((['git', 'branch', '-D', 'git-cl-commit'],), ''), 275 ((['git', 'branch', '-D', 'git-cl-commit'],), ''),
251 ] 276 ]
252 277
253 @staticmethod 278 @staticmethod
254 def _cmd_line(description, args, similarity, find_copies): 279 def _cmd_line(description, args, similarity, find_copies):
255 """Returns the upload command line passed to upload.RealMain().""" 280 """Returns the upload command line passed to upload.RealMain()."""
256 return [ 281 return [
257 'upload', '--assume_yes', '--server', 282 'upload', '--assume_yes', '--server',
258 'https://codereview.example.com', 283 'https://codereview.example.com',
259 '--message', description 284 '--message', description
260 ] + args + [ 285 ] + args + [
261 '--cc', 'joe@example.com', 286 '--cc', 'joe@example.com',
262 '--git_similarity', similarity or '50' 287 '--git_similarity', similarity or '50'
263 ] + (['--git_no_find_copies'] if find_copies == False else []) + [ 288 ] + (['--git_no_find_copies'] if find_copies == False else []) + [
264 'master...' 289 'fake_ancestor_sha'
265 ] 290 ]
266 291
267 def _run_reviewer_test( 292 def _run_reviewer_test(
268 self, 293 self,
269 upload_args, 294 upload_args,
270 expected_description, 295 expected_description,
271 returned_description, 296 returned_description,
272 final_description, 297 final_description,
273 reviewers): 298 reviewers):
274 """Generic reviewer test framework.""" 299 """Generic reviewer test framework."""
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 self.mock(sys, 'stderr', mock) 409 self.mock(sys, 'stderr', mock)
385 git_cl.main(['upload', '--send-mail']) 410 git_cl.main(['upload', '--send-mail'])
386 self.fail() 411 self.fail()
387 except SystemExit: 412 except SystemExit:
388 self.assertEquals( 413 self.assertEquals(
389 'Must specify reviewers to send email.\n', mock.buf.getvalue()) 414 'Must specify reviewers to send email.\n', mock.buf.getvalue())
390 415
391 def test_dcommit(self): 416 def test_dcommit(self):
392 self.calls = ( 417 self.calls = (
393 self._dcommit_calls_1() + 418 self._dcommit_calls_1() +
419 self._git_sanity_checks('fake_ancestor_sha', 'working') +
394 self._dcommit_calls_normal() + 420 self._dcommit_calls_normal() +
395 self._dcommit_calls_3()) 421 self._dcommit_calls_3())
396 git_cl.main(['dcommit']) 422 git_cl.main(['dcommit'])
397 423
398 def test_dcommit_bypass_hooks(self): 424 def test_dcommit_bypass_hooks(self):
399 self.calls = ( 425 self.calls = (
400 self._dcommit_calls_1() + 426 self._dcommit_calls_1() +
401 self._dcommit_calls_bypassed() + 427 self._dcommit_calls_bypassed() +
402 self._dcommit_calls_3()) 428 self._dcommit_calls_3())
403 git_cl.main(['dcommit', '--bypass-hooks']) 429 git_cl.main(['dcommit', '--bypass-hooks'])
404 430
405 431
406 @staticmethod 432 @classmethod
407 def _gerrit_base_calls(): 433 def _gerrit_base_calls(cls):
408 return [ 434 return [
409 ((['git', 'config', 'gerrit.host'],), 'gerrit.example.com'), 435 ((['git', 'config', 'gerrit.host'],), 'gerrit.example.com'),
410 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), 436 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'),
411 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 437 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
412 ((['git', 'config', '--int', '--get', 438 ((['git', 'config', '--int', '--get',
413 'branch.master.git-cl-similarity'],), ''), 439 'branch.master.git-cl-similarity'],), ''),
414 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 440 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
415 ((['git', 'config', '--int', '--get', 441 ((['git', 'config', '--int', '--get',
416 'branch.master.git-find-copies'],), ''), 442 'branch.master.git-find-copies'],), ''),
417 ((['git', 'update-index', '--refresh', '-q'],), ''), 443 ((['git', 'update-index', '--refresh', '-q'],), ''),
418 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''), 444 ((['git', 'diff-index', '--name-status', 'HEAD'],), ''),
419 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), 445 ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
420 ((['git', 'config', 'branch.master.merge'],), 'master'), 446 ((['git', 'config', 'branch.master.merge'],), 'master'),
421 ((['git', 'config', 'branch.master.remote'],), 'origin'), 447 ((['git', 'config', 'branch.master.remote'],), 'origin'),
448 ((['git', 'merge-base', 'master', 'HEAD'],), 'fake_ancestor_sha'),
449 ] + cls._git_sanity_checks('fake_ancestor_sha', 'master') + [
422 ((['git', 'rev-parse', '--show-cdup'],), ''), 450 ((['git', 'rev-parse', '--show-cdup'],), ''),
423 ((['git', 'rev-parse', 'HEAD'],), '12345'), 451 ((['git', 'rev-parse', 'HEAD'],), '12345'),
424 ((['git', 'diff', '--name-status', '-r', 'master...', '.'],), 452 ((['git', 'diff', '--name-status', '-r', 'fake_ancestor_sha...', '.'],),
425 'M\t.gitignore\n'), 453 'M\t.gitignore\n'),
426 ((['git', 'config', 'branch.master.rietveldissue'],), ''), 454 ((['git', 'config', 'branch.master.rietveldissue'],), ''),
427 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), 455 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''),
428 ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), 456 ((['git', 'log', '--pretty=format:%s%n%n%b', 'fake_ancestor_sha...'],),
457 'foo'),
429 ((['git', 'config', 'user.email'],), 'me@example.com'), 458 ((['git', 'config', 'user.email'],), 'me@example.com'),
430 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', 459 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder',
431 '-l100000', '-C50', 'master...'],), 460 '-l100000', '-C50', 'fake_ancestor_sha'],),
432 '+dat'), 461 '+dat'),
433 ] 462 ]
434 463
435 @staticmethod 464 @staticmethod
436 def _gerrit_upload_calls(description, reviewers): 465 def _gerrit_upload_calls(description, reviewers):
437 calls = [ 466 calls = [
438 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 467 ((['git', 'log', '--pretty=format:%s\n\n%b', 'fake_ancestor_sha..'],),
439 description) 468 description)
440 ] 469 ]
441 if git_cl.CHANGE_ID not in description: 470 if git_cl.CHANGE_ID not in description:
442 calls += [ 471 calls += [
443 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 472 ((['git', 'log', '--pretty=format:%s\n\n%b', 'fake_ancestor_sha..'],),
444 description), 473 description),
445 ((['git', 'commit', '--amend', '-m', description],), 474 ((['git', 'commit', '--amend', '-m', description],),
446 ''), 475 ''),
447 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 476 ((['git', 'log', '--pretty=format:%s\n\n%b', 'fake_ancestor_sha..'],),
448 description) 477 description)
449 ] 478 ]
450 calls += [ 479 calls += [
451 ((['git', 'config', 'rietveld.cc'],), '') 480 ((['git', 'config', 'rietveld.cc'],), '')
452 ] 481 ]
453 receive_pack = '--receive-pack=git receive-pack ' 482 receive_pack = '--receive-pack=git receive-pack '
454 receive_pack += '--cc=joe@example.com' # from watch list 483 receive_pack += '--cc=joe@example.com' # from watch list
455 if reviewers: 484 if reviewers:
456 receive_pack += ' ' 485 receive_pack += ' '
457 receive_pack += ' '.join(['--reviewer=' + email for email in reviewers]) 486 receive_pack += ' '.join(['--reviewer=' + email for email in reviewers])
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 ((['git', 'config', 'rietveld.viewvc-url'],), ''), 579 ((['git', 'config', 'rietveld.viewvc-url'],), ''),
551 (('ViewVC URL:',), ''), 580 (('ViewVC URL:',), ''),
552 # DownloadHooks(True) 581 # DownloadHooks(True)
553 ((commit_msg_path, os.X_OK,), True), 582 ((commit_msg_path, os.X_OK,), True),
554 ] 583 ]
555 git_cl.main(['config']) 584 git_cl.main(['config'])
556 585
557 586
558 if __name__ == '__main__': 587 if __name__ == '__main__':
559 unittest.main() 588 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