Index: tests/git_cl_test.py |
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py |
index 8ef92d301b8eb864e2ee31eb5584d295c8473fcf..f15cbbbb39ad62dcf3b601a5f40ea57840019d2e 100755 |
--- a/tests/git_cl_test.py |
+++ b/tests/git_cl_test.py |
@@ -5,6 +5,7 @@ |
"""Unit tests for git_cl.py.""" |
+import copy |
import json |
import os |
import StringIO |
@@ -265,6 +266,9 @@ class TestGitCl(TestCase): |
self._mocked_call(['get_or_create_merge_base']+list(a)))) |
self.mock(git_cl, 'BranchExists', lambda _: True) |
self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: '') |
+ self.mock(git_cl, 'time_sleep', |
+ lambda seconds: self._mocked_call(['time_sleep', seconds])) |
+ self.mock(git_cl, 'time_time', lambda: self._mocked_call(['time_time'])) |
self.mock(git_cl, 'ask_for_data', self._mocked_call) |
self.mock(git_cl, 'write_json', lambda path, contents: |
self._mocked_call('write_json', path, contents)) |
@@ -2086,11 +2090,12 @@ class TestGitCl(TestCase): |
((['git', 'config', 'rietveld.autoupdate'],), CERR1), |
((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), |
((['git', 'config', 'branch.feature.rietveldpatchset'],), '20001'), |
+ ((['time_time'],), 1000.0), |
((['git', 'config', 'branch.feature.rietveldserver'],), |
'codereview.example.com'), |
((['get_authenticator_for_host', 'codereview.example.com'],), |
AuthenticatorMock()), |
- ] + [((['_buildbucket_retry'],), r) for r in request_results] |
+ ] + [((['_buildbucket_retry'],), copy.deepcopy(r)) for r in request_results] |
def test_fetch_try_jobs_none_rietveld(self): |
self._setup_fetch_try_jobs_rietveld({}) |
@@ -2118,11 +2123,12 @@ class TestGitCl(TestCase): |
((['git', 'config', 'branch.feature.gerritissue'],), '1'), |
# Simulate that Gerrit has more patchsets than local. |
((['git', 'config', 'branch.feature.gerritpatchset'],), '12'), |
+ ((['time_time'],), 1000.0), |
((['git', 'config', 'branch.feature.gerritserver'],), |
'https://x-review.googlesource.com'), |
((['get_authenticator_for_host', 'x-review.googlesource.com'],), |
AuthenticatorMock()), |
- ] + [((['_buildbucket_retry'],), r) for r in request_results] |
+ ] + [((['_buildbucket_retry'],), copy.deepcopy(r)) for r in request_results] |
def test_fetch_try_jobs_none_gerrit(self): |
self._setup_fetch_try_jobs_gerrit({}) |
@@ -2147,6 +2153,36 @@ class TestGitCl(TestCase): |
self.assertRegexpMatches(sys.stdout.getvalue(), 'Started:') |
self.assertRegexpMatches(sys.stdout.getvalue(), '2 try jobs') |
+ def test_fetch_try_jobs_some_gerrit_wait(self): |
+ # Sort jobs by ID for determinism. |
+ some_incomplete = copy.deepcopy([ |
+ b for _, b in sorted(self.BUILDBUCKET_BUILDS_MAP.iteritems())]) |
+ self.assertEqual(some_incomplete[0]['id'], '8000') |
+ self.assertEqual(some_incomplete[0]['status'], 'COMPLETED') |
+ self.assertEqual(some_incomplete[1]['id'], '9000') |
+ self.assertEqual(some_incomplete[1]['status'], 'STARTED') |
+ all_complete = copy.deepcopy(some_incomplete) |
+ all_complete[1]['status'] = 'COMPLETED' |
+ |
+ self._setup_fetch_try_jobs_gerrit({'builds': some_incomplete}) |
+ self.calls += [ |
+ ((['time_time'],), 1010.0), |
+ ((['time_sleep', 10],), None), |
+ ((['get_authenticator_for_host', 'x-review.googlesource.com'],), |
+ AuthenticatorMock()), |
+ ((['_buildbucket_retry'],), {'builds': all_complete}), |
+ ] |
+ self.assertEqual(0, git_cl.main(['try-results', '-w'])) |
+ |
+ def test_fetch_try_jobs_gerrit_wait_timeout(self): |
+ self._setup_fetch_try_jobs_gerrit({ |
+ 'builds': self.BUILDBUCKET_BUILDS_MAP.values(), # Not all complete. |
+ }) |
+ self.calls += [ |
+ ((['time_time'],), 1000.0 + 60 * 60 + 1), # Simulate running for too long. |
+ ] |
+ self.assertEqual(3, git_cl.main(['try-results', '-w'])) |
+ |
if __name__ == '__main__': |
git_cl.logging.basicConfig( |