Index: tests/git_cl_test.py |
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py |
index 1e70e1b3248b7799772a4d62ede361af043366f3..f7f57b4cf9e07d363a5f52022fb6ab77136ae4e1 100755 |
--- a/tests/git_cl_test.py |
+++ b/tests/git_cl_test.py |
@@ -10,6 +10,7 @@ import StringIO |
import stat |
import sys |
import unittest |
+import re |
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
@@ -18,7 +19,7 @@ from testing_support.auto_stub import TestCase |
import git_cl |
import git_common |
import subprocess2 |
- |
+import presubmit_support |
class PresubmitMock(object): |
def __init__(self, *args, **kwargs): |
@@ -750,6 +751,119 @@ class TestGitCl(TestCase): |
actual.append(obj.description) |
self.assertEqual(expected, actual) |
+ def test_trybots_from_PRESUBMIT(self): |
+ TEST_MASTER = 'testMaster' |
+ TEST_BUILDER = 'testBuilder' |
+ MASTERS = {TEST_MASTER:{TEST_BUILDER:['a']}} |
+ self.mock(presubmit_support, 'DoGetTryMasters', |
+ lambda *args: MASTERS) |
+ |
+ change_mock = ChangeMock() |
+ changelist_mock = ChangelistMock(change_mock) |
+ self.mock(git_cl, 'is_dirty_git_tree', lambda x: False) |
+ self.mock(git_cl, 'print_stats', lambda *arg: True) |
+ self.mock(git_cl, 'Changelist', lambda *args: changelist_mock) |
+ self.mock(git_cl, 'CreateDescriptionFromLog', lambda arg: 'Commit message') |
+ self.mock(git_cl.ChangeDescription, 'prompt', lambda self: None) |
+ |
+ self.calls = [ |
+ ((['git', 'config', 'rietveld.autoupdate',],), |
+ ''), |
+ ((['git', 'config', 'gerrit.host',],), |
+ ''), |
+ ((['git', 'rev-parse', '--show-cdup',],), |
+ ''), |
+ ((['git', 'config', 'rietveld.private',],), |
+ ''), |
+ ((['git', 'config', '--local', '--get-regexp', '^svn-remote\\.'],), |
+ ''), |
+ ((['git', 'config', 'rietveld.project',],), |
+ ''), |
+ ((['git', 'rev-parse', 'HEAD',],), |
+ ''), |
+ ] |
+ |
+ stored_description = [] |
+ def check_upload(args): |
+ i = 0 |
+ for arg in args: |
+ if arg == '--message': |
+ break |
+ i += 1 |
+ |
+ self.assertTrue(i < len(args)) |
+ stored_description.append(args[i+1]) |
+ return 1, 2 |
+ self.mock(git_cl.upload, 'RealMain', check_upload) |
+ |
+ git_cl.main(['upload', '--bypass-hooks', '--auto-bots']) |
+ found = re.search("CQ_TRYBOTS=(.*?)$", stored_description[0]) |
+ self.assertTrue(found) |
+ self.assertEqual(found.group(1), '%s:%s' % (TEST_MASTER, TEST_BUILDER)) |
+ |
+ |
+class ChangelistMock(object): |
+ # Disable "Method could be a function" |
+ # pylint: disable=R0201 |
+ |
+ def __init__(self, change_mock): |
+ self.change_mock = change_mock |
+ |
+ def GetChange(self, *args): |
+ return self.change_mock |
+ |
+ def GetIssue(self): |
+ return None |
+ |
+ def GetBranch(self): |
+ return [] |
+ |
+ def GetCommonAncestorWithUpstream(self): |
+ return [] |
+ |
+ def GetCCList(self): |
+ return [] |
+ |
+ def GetGitBaseUrlFromConfig(self): |
+ return '' |
+ |
+ def GetRemoteUrl(self): |
+ return '' |
+ |
+ def GetRietveldServer(self): |
+ return None |
+ |
+ def SetWatchers(self, *args): |
+ pass |
+ |
+ def SetIssue(self, issue): |
+ pass |
+ |
+ def SetPatchset(self, issue): |
+ pass |
+ |
+ |
+class ChangeMock(object): |
+ # Disable "Method could be a function" |
+ # pylint: disable=R0201 |
+ |
+ def __init__(self): |
+ self.stored_description = None |
+ |
+ def SetDescriptionText(self, desc): |
+ self.stored_description = desc |
+ |
+ def FullDescriptionText(self): |
+ return 'HIHI TEST DESCRIPTION' |
+ |
+ def RepositoryRoot(self): |
+ return [] |
+ |
+ def AffectedFiles(self): |
+ return [] |
+ |
+ def LocalPaths(self): |
+ return None |
if __name__ == '__main__': |
git_cl.logging.basicConfig( |