Chromium Code Reviews| Index: tests/git_cl_test.py |
| diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py |
| index 1e70e1b3248b7799772a4d62ede361af043366f3..9c0f32c68563469c12e73bb02a9bc216a5cfd3c4 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,84 @@ 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): |
| + def __init__(self, change_mock): |
| + self.change_mock = change_mock |
| + |
| + def __getattr__(self, key): |
| + if key == 'GetChange': |
| + return lambda *args: self.change_mock |
| + if key == 'SetWatchers': |
| + return lambda *args: None |
| + if 'Set' in key: |
| + return lambda x: True |
|
iannucci
2014/06/24 23:23:59
these should be methods :D
martiniss
2014/06/24 23:55:55
Done! Manually added all the mocked methods.
|
| + return lambda: [] |
| + |
| +class ChangeMock(object): |
| + def __init__(self): |
| + self.stored_description = None |
| + |
| + def __getattr__(self, key): |
| + if key == 'SetDescriptionText': |
| + def func(description): |
| + self.stored_description = description |
| + return func |
| + if key == 'FullDescriptionText': |
| + return lambda: "HIHI TEST DESCRIPTION" |
| + if 'Repository' in key: |
| + return lambda: '' |
| + return lambda: [] |
| if __name__ == '__main__': |
| git_cl.logging.basicConfig( |