Chromium Code Reviews| Index: tests/git_cl_test.py |
| diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py |
| index 987b478a0ec519d500a9c15397d76f57b4924b49..b4c149fb9623eb64ccf1b5be44d9a674ca1c5a5b 100755 |
| --- a/tests/git_cl_test.py |
| +++ b/tests/git_cl_test.py |
| @@ -137,6 +137,11 @@ class MockChangelistWithBranchAndIssue(): |
| def GetIssue(self): |
| return self.issue |
| + |
| +class SystemExitMock(Exception): |
| + pass |
| + |
| + |
| class TestGitClBasic(unittest.TestCase): |
| def _test_ParseIssueUrl(self, func, url, issue, patchset, hostname, fail): |
| parsed = urlparse.urlparse(url) |
| @@ -271,6 +276,8 @@ class TestGitCl(TestCase): |
| self.mock(git_cl.auth, 'get_authenticator_for_host', AuthenticatorMock) |
| self.mock(git_cl.gerrit_util.GceAuthenticator, 'is_gce', |
| classmethod(lambda _: False)) |
| + self.mock(git_cl, 'DieWithError', |
| + lambda msg: self._mocked_call(['DieWithError', msg])) |
| # It's important to reset settings to not have inter-tests interference. |
| git_cl.settings = None |
| @@ -706,23 +713,21 @@ class TestGitCl(TestCase): |
| def test_reviewer_send_mail_no_rev(self): |
| # Fails without a reviewer. |
| stdout = StringIO.StringIO() |
| - stderr = StringIO.StringIO() |
| - try: |
| - self.calls = self._upload_no_rev_calls(None, None) |
| - def RunEditor(desc, _, **kwargs): |
| - return desc |
| - self.mock(git_cl.gclient_utils, 'RunEditor', RunEditor) |
| - self.mock(sys, 'stdout', stdout) |
| - self.mock(sys, 'stderr', stderr) |
| + self.calls = self._upload_no_rev_calls(None, None) + [ |
| + ((['DieWithError', 'Must specify reviewers to send email.'],), |
| + SystemExitMock()) |
| + ] |
| + |
| + def RunEditor(desc, _, **kwargs): |
| + return desc |
| + self.mock(git_cl.gclient_utils, 'RunEditor', RunEditor) |
| + self.mock(sys, 'stdout', stdout) |
| + with self.assertRaises(SystemExitMock): |
| git_cl.main(['upload', '--send-mail']) |
| - self.fail() |
| - except SystemExit: |
|
Sergiy Byelozyorov
2016/10/10 11:41:12
nice refactor
tandrii(chromium)
2016/10/10 15:10:14
:)
|
| - self.assertEqual( |
| - 'Using 50% similarity for rename/copy detection. Override with ' |
| - '--similarity.\n', |
| - stdout.getvalue()) |
| - self.assertEqual( |
| - 'Must specify reviewers to send email.\n', stderr.getvalue()) |
| + self.assertEqual( |
| + 'Using 50% similarity for rename/copy detection. Override with ' |
| + '--similarity.\n', |
| + stdout.getvalue()) |
| def test_bug_on_cmd(self): |
| self._run_reviewer_test( |
| @@ -1399,10 +1404,6 @@ class TestGitCl(TestCase): |
| def test_gerrit_patch_conflict(self): |
| self._patch_common(is_gerrit=True) |
| - self.mock(git_cl, 'DieWithError', |
| - lambda msg: self._mocked_call(['DieWithError', msg])) |
| - class SystemExitMock(Exception): |
| - pass |
| self.calls += [ |
| ((['git', 'fetch', 'https://chromium.googlesource.com/my/repo', |
| 'refs/changes/56/123456/1'],), ''), |
| @@ -1414,6 +1415,22 @@ class TestGitCl(TestCase): |
| git_cl.main(['patch', |
| 'https://chromium-review.googlesource.com/#/c/123456/1']) |
| + def test_gerrit_patch_not_exists(self): |
| + url = 'https://chromium-review.googlesource.com' |
| + self.mock(git_cl.gerrit_util, 'GetChangeDetail', lambda _, __, ___: None) |
| + self.calls = [ |
| + ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| + ((['git', 'symbolic-ref', 'HEAD'],), 'master'), |
| + ((['git', 'config', 'branch.master.rietveldissue'],), CERR1), |
| + ((['git', 'config', 'branch.master.gerritissue'],), CERR1), |
| + ((['git', 'config', 'rietveld.autoupdate'],), CERR1), |
| + ((['git', 'config', 'gerrit.host'],), 'true'), |
| + ((['DieWithError', 'issue 123456 at ' + url + ' does not exist ' |
| + 'or you have no access to it'],), SystemExitMock()), |
| + ] |
| + with self.assertRaises(SystemExitMock): |
| + self.assertEqual(1, git_cl.main(['patch', url + '/#/c/123456/1'])) |
| + |
| def _checkout_calls(self): |
| return [ |
| ((['git', 'config', '--local', '--get-regexp', |