Index: tests/git_cl_test.py |
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py |
index 42231e9dfb01d6e7c9d047105e01418dbb029f95..94cd662637fe8a56a2be880b04f1aabeffb54355 100755 |
--- a/tests/git_cl_test.py |
+++ b/tests/git_cl_test.py |
@@ -571,7 +571,7 @@ class TestGitCl(TestCase): |
] |
@staticmethod |
- def _gerrit_upload_calls(description, reviewers): |
+ def _gerrit_upload_calls(description, reviewers, squash): |
calls = [ |
((['git', 'config', 'gerrit.host'],), |
'gerrit.example.com'), |
@@ -590,8 +590,29 @@ class TestGitCl(TestCase): |
'fake_ancestor_sha..HEAD'],), |
description) |
] |
+ if squash: |
+ ref_to_push = 'abcdef0123456789' |
+ calls += [ |
+ ((['git', 'show', '--format=%s\n\n%b', '-s', |
+ 'refs/heads/git_cl_uploads/master'],), |
+ (description, 0)), |
+ ((['git', 'config', 'branch.master.merge'],), |
+ 'refs/heads/master'), |
+ ((['git', 'config', 'branch.master.remote'],), |
+ 'origin'), |
+ ((['get_or_create_merge_base', 'master', 'master'],), |
+ 'origin/master'), |
+ ((['git', 'rev-parse', 'HEAD:'],), |
+ '0123456789abcdef'), |
+ ((['git', 'commit-tree', '0123456789abcdef', '-p', |
+ 'origin/master', '-m', 'd'],), |
+ ref_to_push), |
+ ] |
+ else: |
+ ref_to_push = 'HEAD' |
+ |
calls += [ |
- ((['git', 'rev-list', 'origin/master..'],), ''), |
+ ((['git', 'rev-list', 'origin/master..' + ref_to_push],), ''), |
((['git', 'config', 'rietveld.cc'],), '') |
] |
receive_pack = '--receive-pack=git receive-pack ' |
@@ -603,19 +624,28 @@ class TestGitCl(TestCase): |
receive_pack += '' |
calls += [ |
((['git', |
- 'push', receive_pack, 'origin', 'HEAD:refs/for/master'],), |
+ 'push', receive_pack, 'origin', ref_to_push + ':refs/for/master'],), |
'') |
] |
+ if squash: |
+ calls += [ |
+ ((['git', 'rev-parse', 'HEAD'],), 'abcdef0123456789'), |
+ ((['git', 'update-ref', '-m', 'Uploaded abcdef0123456789', |
+ 'refs/heads/git_cl_uploads/master', 'abcdef0123456789'],), |
+ '') |
+ ] |
+ |
return calls |
def _run_gerrit_upload_test( |
self, |
upload_args, |
description, |
- reviewers): |
+ reviewers, |
+ squash=False): |
"""Generic gerrit upload test framework.""" |
self.calls = self._gerrit_base_calls() |
- self.calls += self._gerrit_upload_calls(description, reviewers) |
+ self.calls += self._gerrit_upload_calls(description, reviewers, squash) |
git_cl.main(['upload'] + upload_args) |
def test_gerrit_upload_without_change_id(self): |
@@ -643,6 +673,12 @@ class TestGitCl(TestCase): |
'Change-Id:123456789\n', |
['reviewer@example.com', 'another@example.com']) |
+ def test_gerrit_upload_squash(self): |
+ self._run_gerrit_upload_test( |
+ ['--squash'], |
+ 'desc\n\nBUG=\nChange-Id:123456789\n', |
+ [], |
+ squash=True) |
def test_config_gerrit_download_hook(self): |
self.mock(git_cl, 'FindCodereviewSettingsFile', CodereviewSettingsFileMock) |
@@ -762,7 +798,7 @@ class TestGitCl(TestCase): |
self.assertEqual(None, git_cl.GetTargetRef(None, |
'refs/remotes/origin/master', |
'master', None)) |
- |
+ |
# Check default target refs for branches. |
self.assertEqual('refs/heads/master', |
git_cl.GetTargetRef('origin', 'refs/remotes/origin/master', |