Download hooks only in "git cl config"
also, use http download instead of scp,
because scp won't work well on Windows.
BUG=chromium:113153
Review URL: https://chromiumcodereview.appspot.com/9369023
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@121820 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index 2e50be2..ef6fa19 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -7,6 +7,7 @@
import os
import StringIO
+import stat
import sys
import unittest
@@ -42,6 +43,16 @@
return ['joe@example.com']
+class CodereviewSettingsFileMock(object):
+ def __init__(self):
+ pass
+ # pylint: disable=R0201
+ def read(self):
+ return ("CODE_REVIEW_SERVER: gerrit.chromium.org\n" +
+ "GERRIT_HOST: gerrit.chromium.org\n" +
+ "GERRIT_PORT: 29418\n")
+
+
class TestGitCl(TestCase):
def setUp(self):
super(TestGitCl, self).setUp()
@@ -389,5 +400,61 @@
['reviewer@example.com', 'another@example.com'])
+ def test_config_gerrit_download_hook(self):
+ self.mock(git_cl, 'FindCodereviewSettingsFile', CodereviewSettingsFileMock)
+ def ParseCodereviewSettingsContent(content):
+ keyvals = {}
+ keyvals['CODE_REVIEW_SERVER'] = 'gerrit.chromium.org'
+ keyvals['GERRIT_HOST'] = 'gerrit.chromium.org'
+ keyvals['GERRIT_PORT'] = '29418'
+ return keyvals
+ self.mock(git_cl.gclient_utils, 'ParseCodereviewSettingsContent',
+ ParseCodereviewSettingsContent)
+ self.mock(git_cl.os, 'access', self._mocked_call)
+ self.mock(git_cl.os, 'chmod', self._mocked_call)
+ def AbsPath(path):
+ if not path.startswith('/'):
+ return os.path.join('/usr/local/src', path)
+ return path
+ self.mock(git_cl.os.path, 'abspath', AbsPath)
+ def Exists(path):
+ if path == '/usr/local/src/.git/hooks/commit-msg':
+ return False
+ # others paths, such as /usr/share/locale/....
+ return True
+ self.mock(git_cl.os.path, 'exists', Exists)
+ self.mock(git_cl.urllib, 'urlretrieve', self._mocked_call)
+ self.calls = [
+ ((['git', 'config', 'rietveld.server', 'gerrit.chromium.org'],), ''),
+ ((['git', 'config', '--unset-all', 'rietveld.cc'],), ''),
+ ((['git', 'config', '--unset-all', 'rietveld.tree-status-url'],), ''),
+ ((['git', 'config', '--unset-all', 'rietveld.viewvc-url'],), ''),
+ ((['git', 'config', 'gerrit.host', 'gerrit.chromium.org'],), ''),
+ ((['git', 'config', 'gerrit.port', '29418'],), ''),
+ # DownloadHooks(False)
+ ((['git', 'config', 'gerrit.host'],), 'gerrit.chromium.org'),
+ ((['git', 'config', 'rietveld.server'],), 'gerrit.chromium.org'),
+ ((['git', 'rev-parse', '--show-cdup'],), ''),
+ (('/usr/local/src/.git/hooks/commit-msg', os.X_OK,), False),
+ (('https://gerrit.chromium.org/tools/hooks/commit-msg',
+ '/usr/local/src/.git/hooks/commit-msg',), ''),
+ (('/usr/local/src/.git/hooks/commit-msg',
+ stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR,), ''),
+ # GetCodereviewSettingsInteractively
+ ((['git', 'config', 'rietveld.server'],), 'gerrit.chromium.org'),
+ (('Rietveld server (host[:port]) [https://gerrit.chromium.org]:',),
+ ''),
+ ((['git', 'config', 'rietveld.cc'],), ''),
+ (('CC list:',), ''),
+ ((['git', 'config', 'rietveld.tree-status-url'],), ''),
+ (('Tree status URL:',), ''),
+ ((['git', 'config', 'rietveld.viewvc-url'],), ''),
+ (('ViewVC URL:',), ''),
+ # DownloadHooks(True)
+ (('/usr/local/src/.git/hooks/commit-msg', os.X_OK,), True),
+ ]
+ git_cl.main(['config'])
+
+
if __name__ == '__main__':
unittest.main()