git cl: use gnumbd config instead of PENDING_REF_PREFIX of codereview.settings.
BUG=chromium:642493,672043
R=machenbach@chromium.org,iannucci@chromium.org
Change-Id: I0abc31b95b1766fd5fd24c1379b538d0c5291011
Reviewed-on: https://chromium-review.googlesource.com/417259
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index 1a6652e..6b6fa89 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -943,9 +943,16 @@
self._dcommit_calls_3())
git_cl.main(['dcommit', '--bypass-hooks'])
- def _land_rietveld_common(self, debug_stdout=False):
- if not debug_stdout:
+ def _land_rietveld_common(self, debug=False):
+ if debug:
+ # Very useful due to finally clause in git cl land raising exceptions and
+ # shadowing real cause of failure.
+ self.mock(git_cl, '_IS_BEING_TESTED', True)
+ else:
self.mock(git_cl.sys, 'stdout', StringIO.StringIO())
+
+ self.mock(git_cl._GitNumbererState, 'load', classmethod(lambda _, url, ref:
+ self._mocked_call(['_GitNumbererState', url, ref])))
self.mock(RietveldMock, 'update_description', staticmethod(
lambda i, d: self._mocked_call(['update_description', i, d])))
self.mock(RietveldMock, 'add_comment', staticmethod(
@@ -1012,9 +1019,14 @@
]
def test_land_rietveld(self):
- self._land_rietveld_common()
+ self._land_rietveld_common(debug=False)
self.calls += [
- ((['git', 'config', 'rietveld.pending-ref-prefix'],), CERR1),
+ ((['git', 'config', 'remote.origin.url'],),
+ 'https://chromium.googlesource.com/infra/infra'),
+ ((['_GitNumbererState',
+ 'https://chromium.googlesource.com/infra/infra',
+ 'refs/heads/master'],),
+ git_cl._GitNumbererState(None, False)),
((['git', 'push', '--porcelain', 'origin', 'HEAD:refs/heads/master'],),
''),
((['git', 'rev-parse', 'HEAD'],), 'fake_sha_rebased'),
@@ -1032,11 +1044,16 @@
git_cl.main(['land'])
def test_land_rietveld_gnumbd(self):
- self._land_rietveld_common()
+ self._land_rietveld_common(debug=False)
self.mock(git_cl, 'WaitForRealCommit',
lambda *a: self._mocked_call(['WaitForRealCommit'] + list(a)))
self.calls += [
- ((['git', 'config', 'rietveld.pending-ref-prefix'],), 'refs/pending/'),
+ ((['git', 'config', 'remote.origin.url'],),
+ 'https://chromium.googlesource.com/chromium/src'),
+ ((['_GitNumbererState',
+ 'https://chromium.googlesource.com/chromium/src',
+ 'refs/heads/master'],),
+ git_cl._GitNumbererState('refs/pending', True)),
((['git', 'rev-parse', 'HEAD'],), 'fake_sha_rebased'),
((['git', 'retry', 'fetch', 'origin',
'+refs/pending/heads/master:refs/git-cl/pending/heads/master'],), ''),
@@ -1067,9 +1084,7 @@
git_cl.main(['land'])
def test_land_rietveld_git_numberer(self):
- self._land_rietveld_common(debug_stdout=False)
- self.mock(git_cl, 'ShouldGenerateGitNumberFooters',
- lambda *a: self._mocked_call(['ShouldGenerateGitNumberFooters']))
+ self._land_rietveld_common(debug=False)
# Special mocks to check validity of timestamp.
original_git_amend_head = git_cl._git_amend_head
@@ -1079,8 +1094,12 @@
self.mock(git_cl, '_git_amend_head', _git_amend_head_mock)
self.calls += [
- ((['git', 'config', 'rietveld.pending-ref-prefix'],), CERR1),
- ((['ShouldGenerateGitNumberFooters'],), True),
+ ((['git', 'config', 'remote.origin.url'],),
+ 'https://chromium.googlesource.com/chromium/src'),
+ ((['_GitNumbererState',
+ 'https://chromium.googlesource.com/chromium/src',
+ 'refs/heads/master'],),
+ git_cl._GitNumbererState(None, True)),
((['git', 'show', '-s', '--format=%B', 'fake_ancestor_sha'],),
'This is parent commit.\n'
@@ -1124,12 +1143,13 @@
git_cl.main(['land'])
def test_land_rietveld_git_numberer_bad_parent(self):
- self._land_rietveld_common()
- self.mock(git_cl, 'ShouldGenerateGitNumberFooters',
- lambda *a: self._mocked_call(['ShouldGenerateGitNumberFooters']))
+ self._land_rietveld_common(debug=False)
self.calls += [
- ((['git', 'config', 'rietveld.pending-ref-prefix'],), CERR1),
- ((['ShouldGenerateGitNumberFooters'],), True),
+ ((['git', 'config', 'remote.origin.url'],),
+ 'https://chromium.googlesource.com/v8/v8'),
+ ((['_GitNumbererState',
+ 'https://chromium.googlesource.com/v8/v8', 'refs/heads/master'],),
+ git_cl._GitNumbererState(None, True)),
((['git', 'show', '-s', '--format=%B', 'fake_ancestor_sha'],),
'This is parent commit with no footer.'),
@@ -1142,30 +1162,6 @@
self.assertEqual(cm.exception.message,
'Unable to infer commit position from footers')
- def test_ShouldGenerateGitNumberFooters(self):
- self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: StringIO.StringIO(
- 'GENERATE_GIT_NUMBER_FOOTERS: true\n'
- ))
- self.assertTrue(git_cl.ShouldGenerateGitNumberFooters())
-
- self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: StringIO.StringIO(
- 'GENERATE_GIT_NUMBER_FOOTERS: false\n'
- ))
- self.assertFalse(git_cl.ShouldGenerateGitNumberFooters())
-
- self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: StringIO.StringIO(
- 'GENERATE_GIT_NUMBER_FOOTERS: anything but true is false\n'
- ))
- self.assertFalse(git_cl.ShouldGenerateGitNumberFooters())
-
- self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: StringIO.StringIO(
- 'whatever: ignored'
- ))
- self.assertFalse(git_cl.ShouldGenerateGitNumberFooters())
-
- self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: None)
- self.assertFalse(git_cl.ShouldGenerateGitNumberFooters())
-
def test_GitNumbererState_not_whitelisted_repo(self):
self.calls = [
((['git', 'config', 'rietveld.autoupdate'],), CERR1),
@@ -1190,7 +1186,7 @@
res = git_cl._GitNumbererState.load(
remote_url='https://chromium.googlesource.com/chromium/src',
remote_ref='refs/whatever')
- self.assertEqual(res.pending_prefix, 'refs/pending-prefix')
+ self.assertEqual(res.pending_prefix, 'refs/pending-prefix/')
self.assertEqual(res.should_git_number, False)
def test_GitNumbererState_fail_gnumbd_and_validator(self):
@@ -1253,7 +1249,7 @@
res = git_cl._GitNumbererState.load(
remote_url='https://chromium.googlesource.com/chromium/src',
remote_ref='refs/heads/master')
- self.assertEqual(res.pending_prefix, 'refs/pending')
+ self.assertEqual(res.pending_prefix, 'refs/pending/')
self.assertEqual(res.should_git_number, False)
res = git_cl._GitNumbererState.load(
@@ -1715,33 +1711,33 @@
def test_get_target_ref(self):
# Check remote or remote branch not present.
- self.assertEqual(None, git_cl.GetTargetRef('origin', None, 'master', None))
+ self.assertEqual(None, git_cl.GetTargetRef('origin', None, 'master', False))
self.assertEqual(None, git_cl.GetTargetRef(None,
'refs/remotes/origin/master',
- 'master', None))
+ 'master', False))
# Check default target refs for branches.
self.assertEqual('refs/heads/master',
git_cl.GetTargetRef('origin', 'refs/remotes/origin/master',
- None, None))
+ None, False))
self.assertEqual('refs/heads/master',
git_cl.GetTargetRef('origin', 'refs/remotes/origin/lkgr',
- None, None))
+ None, False))
self.assertEqual('refs/heads/master',
git_cl.GetTargetRef('origin', 'refs/remotes/origin/lkcr',
- None, None))
+ None, False))
self.assertEqual('refs/branch-heads/123',
git_cl.GetTargetRef('origin',
'refs/remotes/branch-heads/123',
- None, None))
+ None, False))
self.assertEqual('refs/diff/test',
git_cl.GetTargetRef('origin',
'refs/remotes/origin/refs/diff/test',
- None, None))
+ None, False))
self.assertEqual('refs/heads/chrome/m42',
git_cl.GetTargetRef('origin',
'refs/remotes/origin/chrome/m42',
- None, None))
+ None, False))
# Check target refs for user-specified target branch.
for branch in ('branch-heads/123', 'remotes/branch-heads/123',
@@ -1749,23 +1745,26 @@
self.assertEqual('refs/branch-heads/123',
git_cl.GetTargetRef('origin',
'refs/remotes/origin/master',
- branch, None))
+ branch, False))
for branch in ('origin/master', 'remotes/origin/master',
'refs/remotes/origin/master'):
self.assertEqual('refs/heads/master',
git_cl.GetTargetRef('origin',
'refs/remotes/branch-heads/123',
- branch, None))
+ branch, False))
for branch in ('master', 'heads/master', 'refs/heads/master'):
self.assertEqual('refs/heads/master',
git_cl.GetTargetRef('origin',
'refs/remotes/branch-heads/123',
- branch, None))
+ branch, False))
# Check target refs for pending prefix.
+ self.mock(git_cl._GitNumbererState, 'load',
+ classmethod(lambda *_: git_cl._GitNumbererState('prefix', False)))
self.assertEqual('prefix/heads/master',
git_cl.GetTargetRef('origin', 'refs/remotes/origin/master',
- None, 'prefix/'))
+ None, True,
+ 'https://remote.url/some.git'))
def test_patch_when_dirty(self):
# Patch when local tree is dirty