Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(615)

Unified Diff: tests/git_cl_test.py

Issue 2468263005: Implement and test git cl try for Gerrit. (Closed)
Patch Set: review Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « git_cl.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/git_cl_test.py
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index 0d8b285d3917053ba682e3ce437dbc6c4abc3d00..37c2fa13ab0bb0b81f766140824c06235c77c60c 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -1912,10 +1912,58 @@ class TestGitCl(TestCase):
out.getvalue(),
'scheduled CQ Dry Run on https://codereview.chromium.org/123\n')
- def test_git_cl_try_buildbucket_with_properties(self):
- self.mock(git_cl.Changelist, 'GetMostRecentPatchset', lambda _: 20001)
- self.mock(git_cl.Changelist, 'GetIssueOwner', lambda _: 'owner@e.mail')
- self.mock(git_cl.Changelist, 'GetIssueProject', lambda _: 'depot_tools')
+ def test_git_cl_try_default_cq_dry_run_gerrit(self):
+ self.mock(git_cl.Changelist, 'GetChange',
+ lambda _, *a: (
+ self._mocked_call(['GetChange']+list(a))))
+ self.mock(git_cl.presubmit_support, 'DoGetTryMasters',
+ lambda *_, **__: (
+ self._mocked_call(['DoGetTryMasters'])))
+ self.mock(git_cl._GerritChangelistImpl, 'SetCQState',
+ lambda _, s: self._mocked_call(['SetCQState', s]))
+
+ def _GetChangeDetail(gerrit_change_list_impl, opts=None):
+ # Get realistic expectations.
+ gerrit_change_list_impl._GetGerritHost()
+ return self._mocked_call(['_GetChangeDetail', opts or []])
+ self.mock(git_cl._GerritChangelistImpl, '_GetChangeDetail',
+ _GetChangeDetail)
+
+ self.calls = [
+ ((['git', 'symbolic-ref', 'HEAD'],), 'feature'),
+ ((['git', 'config', 'branch.feature.rietveldissue'],), CERR1),
+ ((['git', 'config', 'branch.feature.gerritissue'],), '123456'),
+ ((['git', 'config', 'branch.feature.gerritserver'],),
+ 'https://chromium-review.googlesource.com'),
+ ((['_GetChangeDetail', []],), {'status': 'OPEN'}),
+ ((['git', 'config', 'branch.feature.merge'],), 'feature'),
+ ((['git', 'config', 'branch.feature.remote'],), 'origin'),
+ ((['get_or_create_merge_base', 'feature', 'feature'],),
+ 'fake_ancestor_sha'),
+ ((['GetChange', 'fake_ancestor_sha', None], ),
+ git_cl.presubmit_support.GitChange(
+ '', '', '', '', '', '', '', '')),
+ ((['git', 'rev-parse', '--show-cdup'],), '../'),
+ ((['DoGetTryMasters'], ), None),
+ ((['SetCQState', git_cl._CQState.DRY_RUN], ), None),
+ ]
+ out = StringIO.StringIO()
+ self.mock(git_cl.sys, 'stdout', out)
+ self.assertEqual(0, git_cl.main(['try']))
+ self.assertEqual(
+ out.getvalue(),
+ 'scheduled CQ Dry Run on '
+ 'https://chromium-review.googlesource.com/123456\n')
+
+ def test_git_cl_try_buildbucket_with_properties_rietveld(self):
+ self.mock(git_cl._RietveldChangelistImpl, 'GetIssueProperties',
+ lambda _: {
+ 'owner_email': 'owner@e.mail',
+ 'private': False,
+ 'closed': False,
+ 'project': 'depot_tools',
+ 'patchsets': [20001],
+ })
self.mock(git_cl.uuid, 'uuid4', lambda: 'uuid4')
self.calls = [
((['git', 'symbolic-ref', 'HEAD'],), 'feature'),
@@ -1923,8 +1971,8 @@ class TestGitCl(TestCase):
((['git', 'config', 'rietveld.autoupdate'],), CERR1),
((['git', 'config', 'rietveld.server'],),
'https://codereview.chromium.org'),
- ((['git', 'config', 'branch.feature.rietveldserver'],), CERR1),
((['git', 'config', 'branch.feature.rietveldpatchset'],), '20001'),
+ ((['git', 'config', 'branch.feature.rietveldserver'],), CERR1),
]
def _buildbucket_retry(*_, **kw):
@@ -1968,10 +2016,100 @@ class TestGitCl(TestCase):
git_cl.sys.stdout.getvalue(),
'Tried jobs on:\nBucket: master.tryserver.chromium')
+ def test_git_cl_try_buildbucket_with_properties_gerrit(self):
+ self.mock(git_cl.Changelist, 'GetMostRecentPatchset', lambda _: 7)
+ self.mock(git_cl.uuid, 'uuid4', lambda: 'uuid4')
+
+ def _GetChangeDetail(gerrit_change_list_impl, opts=None):
+ # Get realistic expectations.
+ gerrit_change_list_impl._GetGerritHost()
+ return self._mocked_call(['_GetChangeDetail', opts or []])
+ self.mock(git_cl._GerritChangelistImpl, '_GetChangeDetail',
+ _GetChangeDetail)
+
+ self.calls = [
+ ((['git', 'symbolic-ref', 'HEAD'],), 'feature'),
+ ((['git', 'config', 'branch.feature.rietveldissue'],), CERR1),
+ ((['git', 'config', 'branch.feature.gerritissue'],), '123456'),
+ ((['git', 'config', 'branch.feature.gerritserver'],),
+ 'https://chromium-review.googlesource.com'),
+ ((['_GetChangeDetail', []],), {'status': 'OPEN'}),
+ ((['git', 'config', 'branch.feature.gerritpatchset'],), '7'),
+ ((['_GetChangeDetail', ['DETAILED_ACCOUNTS']],),
+ {'owner': {'email': 'owner@e.mail'}}),
+ ((['_GetChangeDetail', ['ALL_REVISIONS']],), {
+ 'project': 'depot_tools',
+ 'revisions': {
+ 'deadbeaf': {
+ '_number': 6,
+ },
+ 'beeeeeef': {
+ '_number': 7,
+ 'fetch': {'http': {
+ 'url': 'https://chromium.googlesource.com/depot_tools',
+ 'ref': 'refs/changes/56/123456/7'
+ }},
+ },
+ },
+ }),
+ ]
+
+ def _buildbucket_retry(*_, **kw):
+ # self.maxDiff = 10000
+ body = json.loads(kw['body'])
+ self.assertEqual(len(body['builds']), 1)
+ build = body['builds'][0]
+ params = json.loads(build.pop('parameters_json'))
+ self.assertEqual(params, {
+ u'builder_name': u'win',
+ u'changes': [{u'author': {u'email': u'owner@e.mail'},
+ u'revision': None}],
+ u'properties': {
+ u'category': u'git_cl_try',
+ u'key': u'val',
+ u'json': [{u'a': 1}, None],
+ u'master': u'tryserver.chromium',
+
+ u'patch_gerrit_url':
+ u'https://chromium-review.googlesource.com',
+ u'patch_issue': 123456,
+ u'patch_project': u'depot_tools',
+ u'patch_ref': u'refs/changes/56/123456/7',
+ u'patch_repository_url':
+ u'https://chromium.googlesource.com/depot_tools',
+ u'patch_set': 7,
+ u'patch_storage': u'gerrit',
+ }
+ })
+ self.assertEqual(build, {
+ u'bucket': u'master.tryserver.chromium',
+ u'client_operation_id': u'uuid4',
+ u'tags': [
+ u'builder:win',
+ u'buildset:patch/gerrit/chromium-review.googlesource.com/123456/7',
+ u'user_agent:git_cl_try',
+ u'master:tryserver.chromium'],
+ })
+
+ self.mock(git_cl, '_buildbucket_retry', _buildbucket_retry)
+
+ self.mock(git_cl.sys, 'stdout', StringIO.StringIO())
+ self.assertEqual(0, git_cl.main([
+ 'try', '-m', 'tryserver.chromium', '-b', 'win',
+ '-p', 'key=val', '-p', 'json=[{"a":1}, null]']))
+ self.assertRegexpMatches(
+ git_cl.sys.stdout.getvalue(),
+ 'Tried jobs on:\nBucket: master.tryserver.chromium')
+
def test_git_cl_try_buildbucket_bucket_flag(self):
- self.mock(git_cl.Changelist, 'GetMostRecentPatchset', lambda _: 20001)
- self.mock(git_cl.Changelist, 'GetIssueOwner', lambda _: 'owner@e.mail')
- self.mock(git_cl.Changelist, 'GetIssueProject', lambda _: 'depot_tools')
+ self.mock(git_cl._RietveldChangelistImpl, 'GetIssueProperties',
+ lambda _: {
+ 'owner_email': 'owner@e.mail',
+ 'private': False,
+ 'closed': False,
+ 'project': 'depot_tools',
+ 'patchsets': [20001],
+ })
self.mock(git_cl.uuid, 'uuid4', lambda: 'uuid4')
self.calls = [
((['git', 'symbolic-ref', 'HEAD'],), 'feature'),
@@ -1979,8 +2117,8 @@ class TestGitCl(TestCase):
((['git', 'config', 'rietveld.autoupdate'],), CERR1),
((['git', 'config', 'rietveld.server'],),
'https://codereview.chromium.org'),
- ((['git', 'config', 'branch.feature.rietveldserver'],), CERR1),
((['git', 'config', 'branch.feature.rietveldpatchset'],), '20001'),
+ ((['git', 'config', 'branch.feature.rietveldserver'],), CERR1),
]
def _buildbucket_retry(*_, **kw):
@@ -2025,7 +2163,7 @@ class TestGitCl(TestCase):
((['git', 'config', 'branch.feature.rietveldissue'],), '123'),
((['git', 'config', 'rietveld.autoupdate'],), CERR1),
((['git', 'config', 'rietveld.server'],),
- 'https://codereview.chromium.org'),
+ 'https://codereview.chromium.org'),
((['git', 'config', 'branch.feature.rietveldserver'],), CERR1),
((['git', 'config', 'branch.feature.rietveldpatchset'],), '20001'),
]
« no previous file with comments | « git_cl.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698