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

Unified Diff: tests/git_cl_test.py

Issue 348473003: Added support for git cl upload automatic trybot determination. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Moved around pylint disable comments. Created 6 years, 6 months 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 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(
« 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