| OLD | NEW |
| 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 expected_args, result = self.calls.pop(0) | 86 expected_args, result = self.calls.pop(0) |
| 87 self.assertEquals( | 87 self.assertEquals( |
| 88 expected_args, | 88 expected_args, |
| 89 args, | 89 args, |
| 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): | 96 def _upload_calls(cls, similarity, find_copies): |
| 97 return cls._git_base_calls(similarity) + cls._git_upload_calls() | 97 return (cls._git_base_calls(similarity, find_copies) + |
| 98 cls._git_upload_calls()) |
| 98 | 99 |
| 99 @staticmethod | 100 @staticmethod |
| 100 def _git_base_calls(similarity): | 101 def _git_base_calls(similarity, find_copies): |
| 101 if similarity is None: | 102 if similarity is None: |
| 102 similarity = '50' | 103 similarity = '50' |
| 103 similarity_call = ((['git', 'config', '--int', '--get', | 104 similarity_call = ((['git', 'config', '--int', '--get', |
| 104 'branch.master.git-cl-similarity'],), '') | 105 'branch.master.git-cl-similarity'],), '') |
| 105 else: | 106 else: |
| 106 similarity_call = ((['git', 'config', '--int', | 107 similarity_call = ((['git', 'config', '--int', |
| 107 'branch.master.git-cl-similarity', similarity],), '') | 108 'branch.master.git-cl-similarity', similarity],), '') |
| 109 |
| 110 if find_copies is None: |
| 111 find_copies = True |
| 112 find_copies_call = ((['git', 'config', '--int', '--get', |
| 113 'branch.master.git-find-copies'],), '') |
| 114 else: |
| 115 val = str(int(find_copies)) |
| 116 find_copies_call = ((['git', 'config', '--int', |
| 117 'branch.master.git-find-copies', val],), '') |
| 118 |
| 119 if find_copies: |
| 120 stat_call = ((['git', 'diff', '--no-ext-diff', '--stat', |
| 121 '--find-copies-harder', '-l100000', '-C'+similarity, |
| 122 'master...'],), '+dat') |
| 123 else: |
| 124 stat_call = ((['git', 'diff', '--no-ext-diff', '--stat', |
| 125 '-M', '-M', 'master...'],), '+dat') |
| 126 |
| 108 return [ | 127 return [ |
| 109 ((['git', 'config', 'gerrit.host'],), ''), | 128 ((['git', 'config', 'gerrit.host'],), ''), |
| 110 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), | 129 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), |
| 111 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), | 130 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| 112 similarity_call, | 131 similarity_call, |
| 132 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| 133 find_copies_call, |
| 113 ((['git', 'update-index', '--refresh', '-q'],), ''), | 134 ((['git', 'update-index', '--refresh', '-q'],), ''), |
| 114 ((['git', 'diff-index', 'HEAD'],), ''), | 135 ((['git', 'diff-index', 'HEAD'],), ''), |
| 115 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), | 136 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| 116 ((['git', 'config', 'branch.master.merge'],), 'master'), | 137 ((['git', 'config', 'branch.master.merge'],), 'master'), |
| 117 ((['git', 'config', 'branch.master.remote'],), 'origin'), | 138 ((['git', 'config', 'branch.master.remote'],), 'origin'), |
| 118 ((['git', 'rev-parse', '--show-cdup'],), ''), | 139 ((['git', 'rev-parse', '--show-cdup'],), ''), |
| 119 ((['git', 'rev-parse', 'HEAD'],), '12345'), | 140 ((['git', 'rev-parse', 'HEAD'],), '12345'), |
| 120 ((['git', 'diff', '--name-status', '-r', 'master...', '.'],), | 141 ((['git', 'diff', '--name-status', '-r', 'master...', '.'],), |
| 121 'M\t.gitignore\n'), | 142 'M\t.gitignore\n'), |
| 122 ((['git', 'config', 'branch.master.rietveldissue'],), ''), | 143 ((['git', 'config', 'branch.master.rietveldissue'],), ''), |
| 123 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), | 144 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), |
| 124 ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), | 145 ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), |
| 125 ((['git', 'config', 'user.email'],), 'me@example.com'), | 146 ((['git', 'config', 'user.email'],), 'me@example.com'), |
| 126 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', | 147 stat_call, |
| 127 '-C'+similarity, '-l100000', 'master...'],), | |
| 128 '+dat'), | |
| 129 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 'desc\n'), | 148 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), 'desc\n'), |
| 130 ] | 149 ] |
| 131 | 150 |
| 132 @staticmethod | 151 @staticmethod |
| 133 def _git_upload_calls(): | 152 def _git_upload_calls(): |
| 134 return [ | 153 return [ |
| 135 ((['git', 'config', 'rietveld.cc'],), ''), | 154 ((['git', 'config', 'rietveld.cc'],), ''), |
| 136 ((['git', 'config', 'branch.master.base-url'],), ''), | 155 ((['git', 'config', 'branch.master.base-url'],), ''), |
| 137 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],), | 156 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],), |
| 138 (('', None), 0)), | 157 (('', None), 0)), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 150 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],), | 169 ((['git', 'config', '--get-regexp', '^svn-remote\\.'],), |
| 151 ((('svn-remote.svn.url svn://svn.chromium.org/chrome\n' | 170 ((('svn-remote.svn.url svn://svn.chromium.org/chrome\n' |
| 152 'svn-remote.svn.fetch trunk/src:refs/remotes/origin/master'), | 171 'svn-remote.svn.fetch trunk/src:refs/remotes/origin/master'), |
| 153 None), | 172 None), |
| 154 0)), | 173 0)), |
| 155 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), | 174 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), |
| 156 ((['git', 'symbolic-ref', 'HEAD'],), 'refs/heads/working'), | 175 ((['git', 'symbolic-ref', 'HEAD'],), 'refs/heads/working'), |
| 157 ((['git', 'config', '--int', '--get', | 176 ((['git', 'config', '--int', '--get', |
| 158 'branch.working.git-cl-similarity'],), ''), | 177 'branch.working.git-cl-similarity'],), ''), |
| 159 ((['git', 'symbolic-ref', 'HEAD'],), 'refs/heads/working'), | 178 ((['git', 'symbolic-ref', 'HEAD'],), 'refs/heads/working'), |
| 179 ((['git', 'config', '--int', '--get', |
| 180 'branch.working.git-find-copies'],), ''), |
| 181 ((['git', 'symbolic-ref', 'HEAD'],), 'refs/heads/working'), |
| 160 ((['git', 'config', 'branch.working.merge'],), 'refs/heads/master'), | 182 ((['git', 'config', 'branch.working.merge'],), 'refs/heads/master'), |
| 161 ((['git', 'config', 'branch.working.remote'],), 'origin'), | 183 ((['git', 'config', 'branch.working.remote'],), 'origin'), |
| 162 ((['git', 'rev-list', '--merges', | 184 ((['git', 'rev-list', '--merges', |
| 163 '--grep=^SVN changes up to revision [0-9]*$', | 185 '--grep=^SVN changes up to revision [0-9]*$', |
| 164 'refs/remotes/origin/master^!'],), ''), | 186 'refs/remotes/origin/master^!'],), ''), |
| 165 ((['git', 'update-index', '--refresh', '-q'],), ''), | 187 ((['git', 'update-index', '--refresh', '-q'],), ''), |
| 166 ((['git', 'diff-index', 'HEAD'],), ''), | 188 ((['git', 'diff-index', 'HEAD'],), ''), |
| 167 ((['git', 'rev-list', '^refs/heads/working', | 189 ((['git', 'rev-list', '^refs/heads/working', |
| 168 'refs/remotes/origin/master'],), | 190 'refs/remotes/origin/master'],), |
| 169 ''), | 191 ''), |
| (...skipping 28 matching lines...) Expand all Loading... |
| 198 'codereview.example.com'), | 220 'codereview.example.com'), |
| 199 (('GitClHooksBypassedCommit', | 221 (('GitClHooksBypassedCommit', |
| 200 'Issue https://codereview.example.com/12345 bypassed hook when ' | 222 'Issue https://codereview.example.com/12345 bypassed hook when ' |
| 201 'committing'), None), | 223 'committing'), None), |
| 202 ] | 224 ] |
| 203 | 225 |
| 204 @classmethod | 226 @classmethod |
| 205 def _dcommit_calls_3(cls): | 227 def _dcommit_calls_3(cls): |
| 206 return [ | 228 return [ |
| 207 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', | 229 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', |
| 208 '-C50', '-l100000', 'refs/remotes/origin/master', | 230 '-l100000', '-C50', 'refs/remotes/origin/master', |
| 209 'refs/heads/working'],), | 231 'refs/heads/working'],), |
| 210 (' PRESUBMIT.py | 2 +-\n' | 232 (' PRESUBMIT.py | 2 +-\n' |
| 211 ' 1 files changed, 1 insertions(+), 1 deletions(-)\n')), | 233 ' 1 files changed, 1 insertions(+), 1 deletions(-)\n')), |
| 212 (('About to commit; enter to confirm.',), None), | 234 (('About to commit; enter to confirm.',), None), |
| 213 ((['git', 'show-ref', '--quiet', '--verify', | 235 ((['git', 'show-ref', '--quiet', '--verify', |
| 214 'refs/heads/git-cl-commit'],), | 236 'refs/heads/git-cl-commit'],), |
| 215 (('', None), 0)), | 237 (('', None), 0)), |
| 216 ((['git', 'branch', '-D', 'git-cl-commit'],), ''), | 238 ((['git', 'branch', '-D', 'git-cl-commit'],), ''), |
| 217 ((['git', 'show-ref', '--quiet', '--verify', | 239 ((['git', 'show-ref', '--quiet', '--verify', |
| 218 'refs/heads/git-cl-cherry-pick'],), ''), | 240 'refs/heads/git-cl-cherry-pick'],), ''), |
| 219 ((['git', 'rev-parse', '--show-cdup'],), '\n'), | 241 ((['git', 'rev-parse', '--show-cdup'],), '\n'), |
| 220 ((['git', 'checkout', '-q', '-b', 'git-cl-commit'],), ''), | 242 ((['git', 'checkout', '-q', '-b', 'git-cl-commit'],), ''), |
| 221 ((['git', 'reset', '--soft', 'refs/remotes/origin/master'],), ''), | 243 ((['git', 'reset', '--soft', 'refs/remotes/origin/master'],), ''), |
| 222 ((['git', 'commit', '-m', | 244 ((['git', 'commit', '-m', |
| 223 'Issue: 12345\n\nReview URL: https://codereview.example.com/12345'],), | 245 'Issue: 12345\n\nReview URL: https://codereview.example.com/12345'],), |
| 224 ''), | 246 ''), |
| 225 ((['git', 'svn', 'dcommit', '-C50', '--no-rebase', '--rmdir'],), | 247 ((['git', 'svn', 'dcommit', '-C50', '--no-rebase', '--rmdir'],), |
| 226 (('', None), 0)), | 248 (('', None), 0)), |
| 227 ((['git', 'checkout', '-q', 'working'],), ''), | 249 ((['git', 'checkout', '-q', 'working'],), ''), |
| 228 ((['git', 'branch', '-D', 'git-cl-commit'],), ''), | 250 ((['git', 'branch', '-D', 'git-cl-commit'],), ''), |
| 229 ] | 251 ] |
| 230 | 252 |
| 231 @staticmethod | 253 @staticmethod |
| 232 def _cmd_line(description, args, similarity): | 254 def _cmd_line(description, args, similarity, find_copies): |
| 233 """Returns the upload command line passed to upload.RealMain().""" | 255 """Returns the upload command line passed to upload.RealMain().""" |
| 234 return [ | 256 return [ |
| 235 'upload', '--assume_yes', '--server', | 257 'upload', '--assume_yes', '--server', |
| 236 'https://codereview.example.com', | 258 'https://codereview.example.com', |
| 237 '--message', description | 259 '--message', description |
| 238 ] + args + [ | 260 ] + args + [ |
| 239 '--cc', 'joe@example.com', | 261 '--cc', 'joe@example.com', |
| 240 '--git_similarity', similarity or '50', | 262 '--git_similarity', similarity or '50', |
| 263 '--git_no_find_copies' if find_copies == False else '--git_find_copies', |
| 241 'master...' | 264 'master...' |
| 242 ] | 265 ] |
| 243 | 266 |
| 244 def _run_reviewer_test( | 267 def _run_reviewer_test( |
| 245 self, | 268 self, |
| 246 upload_args, | 269 upload_args, |
| 247 expected_description, | 270 expected_description, |
| 248 returned_description, | 271 returned_description, |
| 249 final_description, | 272 final_description, |
| 250 reviewers): | 273 reviewers): |
| 251 """Generic reviewer test framework.""" | 274 """Generic reviewer test framework.""" |
| 252 try: | 275 try: |
| 253 similarity = upload_args[upload_args.index('--similarity')+1] | 276 similarity = upload_args[upload_args.index('--similarity')+1] |
| 254 except ValueError: | 277 except ValueError: |
| 255 similarity = None | 278 similarity = None |
| 256 self.calls = self._upload_calls(similarity) | 279 |
| 280 if '--find-copies' in upload_args: |
| 281 find_copies = True |
| 282 elif '--no-find-copies' in upload_args: |
| 283 find_copies = False |
| 284 else: |
| 285 find_copies = None |
| 286 |
| 287 self.calls = self._upload_calls(similarity, find_copies) |
| 257 def RunEditor(desc, _): | 288 def RunEditor(desc, _): |
| 258 self.assertEquals( | 289 self.assertEquals( |
| 259 '# Enter a description of the change.\n' | 290 '# Enter a description of the change.\n' |
| 260 '# This will displayed on the codereview site.\n' | 291 '# This will displayed on the codereview site.\n' |
| 261 '# The first line will also be used as the subject of the review.\n' + | 292 '# The first line will also be used as the subject of the review.\n' + |
| 262 expected_description, | 293 expected_description, |
| 263 desc) | 294 desc) |
| 264 return returned_description | 295 return returned_description |
| 265 self.mock(git_cl.gclient_utils, 'RunEditor', RunEditor) | 296 self.mock(git_cl.gclient_utils, 'RunEditor', RunEditor) |
| 266 def check_upload(args): | 297 def check_upload(args): |
| 267 cmd_line = self._cmd_line(final_description, reviewers, similarity) | 298 cmd_line = self._cmd_line(final_description, reviewers, similarity, |
| 299 find_copies) |
| 268 self.assertEquals(cmd_line, args) | 300 self.assertEquals(cmd_line, args) |
| 269 return 1, 2 | 301 return 1, 2 |
| 270 self.mock(git_cl.upload, 'RealMain', check_upload) | 302 self.mock(git_cl.upload, 'RealMain', check_upload) |
| 271 git_cl.main(['upload'] + upload_args) | 303 git_cl.main(['upload'] + upload_args) |
| 272 | 304 |
| 273 def test_no_reviewer(self): | 305 def test_no_reviewer(self): |
| 274 self._run_reviewer_test( | 306 self._run_reviewer_test( |
| 275 [], | 307 [], |
| 276 'desc\n\nBUG=\n', | 308 'desc\n\nBUG=\n', |
| 277 '# Blah blah comment.\ndesc\n\nBUG=\n', | 309 '# Blah blah comment.\ndesc\n\nBUG=\n', |
| 278 'desc\n\nBUG=\n', | 310 'desc\n\nBUG=\n', |
| 279 []) | 311 []) |
| 280 | 312 |
| 281 def test_keep_similarity(self): | 313 def test_keep_similarity(self): |
| 282 self._run_reviewer_test( | 314 self._run_reviewer_test( |
| 283 ['--similarity', '70'], | 315 ['--similarity', '70'], |
| 284 'desc\n\nBUG=\n', | 316 'desc\n\nBUG=\n', |
| 285 '# Blah blah comment.\ndesc\n\nBUG=\n', | 317 '# Blah blah comment.\ndesc\n\nBUG=\n', |
| 286 'desc\n\nBUG=\n', | 318 'desc\n\nBUG=\n', |
| 287 []) | 319 []) |
| 288 | 320 |
| 321 def test_keep_find_copies(self): |
| 322 self._run_reviewer_test( |
| 323 ['--no-find-copies'], |
| 324 'desc\n\nBUG=\n', |
| 325 '# Blah blah comment.\ndesc\n\nBUG=\n', |
| 326 'desc\n\nBUG=\n', |
| 327 []) |
| 328 |
| 289 def test_reviewers_cmd_line(self): | 329 def test_reviewers_cmd_line(self): |
| 290 # Reviewer is passed as-is | 330 # Reviewer is passed as-is |
| 291 description = 'desc\n\nR=foo@example.com\nBUG=\n' | 331 description = 'desc\n\nR=foo@example.com\nBUG=\n' |
| 292 self._run_reviewer_test( | 332 self._run_reviewer_test( |
| 293 ['-r' 'foo@example.com'], | 333 ['-r' 'foo@example.com'], |
| 294 description, | 334 description, |
| 295 '\n%s\n' % description, | 335 '\n%s\n' % description, |
| 296 description, | 336 description, |
| 297 ['--reviewers', 'foo@example.com']) | 337 ['--reviewers', 'foo@example.com']) |
| 298 | 338 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 | 370 |
| 331 def test_reviewer_send_mail_no_rev(self): | 371 def test_reviewer_send_mail_no_rev(self): |
| 332 # Fails without a reviewer. | 372 # Fails without a reviewer. |
| 333 class FileMock(object): | 373 class FileMock(object): |
| 334 buf = StringIO.StringIO() | 374 buf = StringIO.StringIO() |
| 335 def write(self, content): | 375 def write(self, content): |
| 336 self.buf.write(content) | 376 self.buf.write(content) |
| 337 | 377 |
| 338 mock = FileMock() | 378 mock = FileMock() |
| 339 try: | 379 try: |
| 340 self.calls = self._git_base_calls(None) | 380 self.calls = self._git_base_calls(None, None) |
| 341 def RunEditor(desc, _): | 381 def RunEditor(desc, _): |
| 342 return desc | 382 return desc |
| 343 self.mock(git_cl.gclient_utils, 'RunEditor', RunEditor) | 383 self.mock(git_cl.gclient_utils, 'RunEditor', RunEditor) |
| 344 self.mock(sys, 'stderr', mock) | 384 self.mock(sys, 'stderr', mock) |
| 345 git_cl.main(['upload', '--send-mail']) | 385 git_cl.main(['upload', '--send-mail']) |
| 346 self.fail() | 386 self.fail() |
| 347 except SystemExit: | 387 except SystemExit: |
| 348 self.assertEquals( | 388 self.assertEquals( |
| 349 'Must specify reviewers to send email.\n', mock.buf.getvalue()) | 389 'Must specify reviewers to send email.\n', mock.buf.getvalue()) |
| 350 | 390 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 364 | 404 |
| 365 | 405 |
| 366 @staticmethod | 406 @staticmethod |
| 367 def _gerrit_base_calls(): | 407 def _gerrit_base_calls(): |
| 368 return [ | 408 return [ |
| 369 ((['git', 'config', 'gerrit.host'],), 'gerrit.example.com'), | 409 ((['git', 'config', 'gerrit.host'],), 'gerrit.example.com'), |
| 370 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), | 410 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), |
| 371 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), | 411 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| 372 ((['git', 'config', '--int', '--get', | 412 ((['git', 'config', '--int', '--get', |
| 373 'branch.master.git-cl-similarity'],), ''), | 413 'branch.master.git-cl-similarity'],), ''), |
| 414 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| 415 ((['git', 'config', '--int', '--get', |
| 416 'branch.master.git-find-copies'],), ''), |
| 374 ((['git', 'update-index', '--refresh', '-q'],), ''), | 417 ((['git', 'update-index', '--refresh', '-q'],), ''), |
| 375 ((['git', 'diff-index', 'HEAD'],), ''), | 418 ((['git', 'diff-index', 'HEAD'],), ''), |
| 376 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), | 419 ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| 377 ((['git', 'config', 'branch.master.merge'],), 'master'), | 420 ((['git', 'config', 'branch.master.merge'],), 'master'), |
| 378 ((['git', 'config', 'branch.master.remote'],), 'origin'), | 421 ((['git', 'config', 'branch.master.remote'],), 'origin'), |
| 379 ((['git', 'rev-parse', '--show-cdup'],), ''), | 422 ((['git', 'rev-parse', '--show-cdup'],), ''), |
| 380 ((['git', 'rev-parse', 'HEAD'],), '12345'), | 423 ((['git', 'rev-parse', 'HEAD'],), '12345'), |
| 381 ((['git', 'diff', '--name-status', '-r', 'master...', '.'],), | 424 ((['git', 'diff', '--name-status', '-r', 'master...', '.'],), |
| 382 'M\t.gitignore\n'), | 425 'M\t.gitignore\n'), |
| 383 ((['git', 'config', 'branch.master.rietveldissue'],), ''), | 426 ((['git', 'config', 'branch.master.rietveldissue'],), ''), |
| 384 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), | 427 ((['git', 'config', 'branch.master.rietveldpatchset'],), ''), |
| 385 ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), | 428 ((['git', 'log', '--pretty=format:%s%n%n%b', 'master...'],), 'foo'), |
| 386 ((['git', 'config', 'user.email'],), 'me@example.com'), | 429 ((['git', 'config', 'user.email'],), 'me@example.com'), |
| 387 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', | 430 ((['git', 'diff', '--no-ext-diff', '--stat', '--find-copies-harder', |
| 388 '-C50', '-l100000', 'master...'],), | 431 '-l100000', '-C50', 'master...'],), |
| 389 '+dat'), | 432 '+dat'), |
| 390 ] | 433 ] |
| 391 | 434 |
| 392 @staticmethod | 435 @staticmethod |
| 393 def _gerrit_upload_calls(description, reviewers): | 436 def _gerrit_upload_calls(description, reviewers): |
| 394 calls = [ | 437 calls = [ |
| 395 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), | 438 ((['git', 'log', '--pretty=format:%s\n\n%b', 'master..'],), |
| 396 description), | 439 description), |
| 397 ((['git', 'config', 'rietveld.cc'],), '') | 440 ((['git', 'config', 'rietveld.cc'],), '') |
| 398 ] | 441 ] |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 ((['git', 'config', 'rietveld.viewvc-url'],), ''), | 532 ((['git', 'config', 'rietveld.viewvc-url'],), ''), |
| 490 (('ViewVC URL:',), ''), | 533 (('ViewVC URL:',), ''), |
| 491 # DownloadHooks(True) | 534 # DownloadHooks(True) |
| 492 ((commit_msg_path, os.X_OK,), True), | 535 ((commit_msg_path, os.X_OK,), True), |
| 493 ] | 536 ] |
| 494 git_cl.main(['config']) | 537 git_cl.main(['config']) |
| 495 | 538 |
| 496 | 539 |
| 497 if __name__ == '__main__': | 540 if __name__ == '__main__': |
| 498 unittest.main() | 541 unittest.main() |
| OLD | NEW |