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