Index: tests/git_cl_test.py |
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py |
index b0048a11d9cee39d22648e9d50a92e752cdc4e6f..53fdacbb2e54d046a748b7eaa19fba4b7c9bf958 100755 |
--- a/tests/git_cl_test.py |
+++ b/tests/git_cl_test.py |
@@ -757,15 +757,27 @@ class TestGitCl(TestCase): |
@classmethod |
def _gerrit_upload_calls(cls, description, reviewers, squash, |
+ squash_mode='default', |
expected_upstream_ref='origin/refs/heads/master', |
ref_suffix='', notify=False, |
post_amend_description=None, issue=None): |
if post_amend_description is None: |
post_amend_description = description |
+ calls = [] |
+ |
+ if squash_mode == 'default': |
+ calls.extend([ |
+ ((['git', 'config', '--bool', 'gerrit.override-squash-uploads'],), ''), |
+ ((['git', 'config', '--bool', 'gerrit.squash-uploads'],), ''), |
+ ]) |
+ elif squash_mode in ('override_squash', 'override_nosquash'): |
+ calls.extend([ |
+ ((['git', 'config', '--bool', 'gerrit.override-squash-uploads'],), |
+ 'true' if squash_mode == 'override_squash' else 'false'), |
+ ]) |
+ else: |
+ assert squash_mode in ('squash', 'nosquash') |
- calls = [ |
- ((['git', 'config', '--bool', 'gerrit.squash-uploads'],), 'false'), |
- ] |
# If issue is given, then description is fetched from Gerrit instead. |
if issue is None: |
if squash: |
@@ -867,22 +879,36 @@ class TestGitCl(TestCase): |
upload_args, |
description, |
reviewers=None, |
- squash=False, |
+ squash=True, |
+ squash_mode=None, |
expected_upstream_ref='origin/refs/heads/master', |
ref_suffix='', |
notify=False, |
post_amend_description=None, |
issue=None): |
"""Generic gerrit upload test framework.""" |
+ if squash_mode is None: |
+ if '--no-squash' in upload_args: |
+ squash_mode = 'nosquash' |
+ elif '--squash' in upload_args: |
+ squash_mode = 'squash' |
+ else: |
+ squash_mode = 'default' |
+ |
reviewers = reviewers or [] |
self.mock(git_cl.sys, 'stdout', StringIO.StringIO()) |
self.mock(git_cl.gerrit_util, 'CookiesAuthenticator', |
CookiesAuthenticatorMockFactory(same_cookie='same_cred')) |
self.mock(git_cl._GerritChangelistImpl, '_GerritCommitMsgHookCheck', |
lambda _, offer_removal: None) |
+ self.mock(git_cl.gclient_utils, 'RunEditor', |
+ lambda *_, **__: self._mocked_call(['RunEditor'])) |
+ self.mock(git_cl, 'DownloadGerritHook', self._mocked_call) |
+ |
self.calls = self._gerrit_base_calls(issue=issue) |
self.calls += self._gerrit_upload_calls( |
description, reviewers, squash, |
+ squash_mode=squash_mode, |
expected_upstream_ref=expected_upstream_ref, |
ref_suffix=ref_suffix, notify=notify, |
post_amend_description=post_amend_description, |
@@ -892,23 +918,37 @@ class TestGitCl(TestCase): |
git_cl.main(['upload'] + upload_args) |
def test_gerrit_upload_without_change_id(self): |
+ self._run_gerrit_upload_test( |
+ ['--no-squash'], |
+ 'desc\n\nBUG=\n', |
+ [], |
+ squash=False, |
+ post_amend_description='desc\n\nBUG=\n\nChange-Id: Ixxx') |
+ |
+ def test_gerrit_upload_without_change_id_override_nosquash(self): |
self.mock(git_cl, 'DownloadGerritHook', self._mocked_call) |
self._run_gerrit_upload_test( |
[], |
'desc\n\nBUG=\n', |
[], |
+ squash=False, |
+ squash_mode='override_nosquash', |
post_amend_description='desc\n\nBUG=\n\nChange-Id: Ixxx') |
def test_gerrit_no_reviewer(self): |
self._run_gerrit_upload_test( |
[], |
'desc\n\nBUG=\n\nChange-Id: I123456789\n', |
- []) |
+ [], |
+ squash=False, |
+ squash_mode='override_nosquash') |
def test_gerrit_patch_title(self): |
self._run_gerrit_upload_test( |
['-t', 'Don\'t put under_scores as they become spaces'], |
'desc\n\nBUG=\n\nChange-Id: I123456789', |
+ squash=False, |
+ squash_mode='override_nosquash', |
ref_suffix='%m=Don\'t_put_under_scores_as_they_become_spaces') |
def test_gerrit_reviewers_cmd_line(self): |
@@ -916,6 +956,8 @@ class TestGitCl(TestCase): |
['-r', 'foo@example.com', '--send-mail'], |
'desc\n\nBUG=\n\nChange-Id: I123456789', |
['foo@example.com'], |
+ squash=False, |
+ squash_mode='override_nosquash', |
notify=True) |
def test_gerrit_reviewer_multiple(self): |
@@ -923,14 +965,24 @@ class TestGitCl(TestCase): |
[], |
'desc\nTBR=reviewer@example.com\nBUG=\nR=another@example.com\n\n' |
'Change-Id: 123456789\n', |
- ['reviewer@example.com', 'another@example.com']) |
+ ['reviewer@example.com', 'another@example.com'], |
+ squash=False, |
+ squash_mode='override_nosquash') |
+ |
+ def test_gerrit_upload_squash_first_is_default(self): |
+ # Mock Gerrit CL description to indicate the first upload. |
+ self.mock(git_cl.Changelist, 'GetDescription', |
+ lambda *_: None) |
+ self._run_gerrit_upload_test( |
+ [], |
+ 'desc\nBUG=\n\nChange-Id: 123456789', |
+ [], |
+ expected_upstream_ref='origin/master') |
def test_gerrit_upload_squash_first(self): |
# Mock Gerrit CL description to indicate the first upload. |
self.mock(git_cl.Changelist, 'GetDescription', |
lambda *_: None) |
- self.mock(git_cl.gclient_utils, 'RunEditor', |
- lambda *_, **__: self._mocked_call(['RunEditor'])) |
self._run_gerrit_upload_test( |
['--squash'], |
'desc\nBUG=\n\nChange-Id: 123456789', |