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

Side by Side Diff: tests/presubmit_unittest.py

Issue 6719004: refactor parsing of change descriptions, fix TBR= (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: remove TestableChangeDescription; the base class is already testable Created 9 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« presubmit_support.py ('K') | « tests/gclient_utils_test.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Unit tests for presubmit_support.py and presubmit_canned_checks.py.""" 6 """Unit tests for presubmit_support.py and presubmit_canned_checks.py."""
7 7
8 # pylint is too confused. 8 # pylint is too confused.
9 # pylint: disable=E1101,E1103,W0212,W0403 9 # pylint: disable=E1101,E1103,W0212,W0403
10 10
11 import StringIO 11 import StringIO
12 import unittest
12 13
13 # Fixes include path. 14 # Fixes include path.
14 from super_mox import mox, SuperMoxTestBase 15 from super_mox import mox, SuperMoxTestBase
15 16
16 import owners 17 import owners
17 import presubmit_support as presubmit 18 import presubmit_support as presubmit
18 # Shortcut. 19 # Shortcut.
19 presubmit_canned_checks = presubmit.presubmit_canned_checks 20 presubmit_canned_checks = presubmit.presubmit_canned_checks
20 21
21 22
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 129
129 130
130 class PresubmitUnittest(PresubmitTestsBase): 131 class PresubmitUnittest(PresubmitTestsBase):
131 """General presubmit_support.py tests (excluding InputApi and OutputApi).""" 132 """General presubmit_support.py tests (excluding InputApi and OutputApi)."""
132 133
133 _INHERIT_SETTINGS = 'inherit-review-settings-ok' 134 _INHERIT_SETTINGS = 'inherit-review-settings-ok'
134 135
135 def testMembersChanged(self): 136 def testMembersChanged(self):
136 self.mox.ReplayAll() 137 self.mox.ReplayAll()
137 members = [ 138 members = [
138 'AffectedFile', 'Change', 'DoGetTrySlaves', 'DoPresubmitChecks', 139 'AffectedFile', 'Change', 'ChangeDescription', 'DoGetTrySlaves',
139 'GetTrySlavesExecuter', 'GitAffectedFile', 140 'DoPresubmitChecks', 'GetTrySlavesExecuter', 'GitAffectedFile',
140 'GitChange', 'InputApi', 'ListRelevantPresubmitFiles', 'Main', 141 'GitChange', 'InputApi', 'ListRelevantPresubmitFiles', 'Main',
141 'NotImplementedException', 'OutputApi', 'ParseFiles', 142 'NotImplementedException', 'OutputApi', 'ParseFiles',
142 'PresubmitExecuter', 'PresubmitOutput', 'ScanSubDirs', 143 'PresubmitExecuter', 'PresubmitOutput', 'ScanSubDirs',
143 'SvnAffectedFile', 'SvnChange', 'cPickle', 'cStringIO', 144 'SvnAffectedFile', 'SvnChange', 'cPickle', 'cStringIO',
144 'exceptions', 'fnmatch', 'gclient_utils', 'glob', 'json', 'load_files', 145 'exceptions', 'fnmatch', 'gclient_utils', 'glob', 'json', 'load_files',
145 'logging', 'marshal', 'normpath', 'optparse', 'os', 'owners', 'pickle', 146 'logging', 'marshal', 'normpath', 'optparse', 'os', 'owners', 'pickle',
146 'presubmit_canned_checks', 'random', 're', 'scm', 'subprocess', 147 'presubmit_canned_checks', 'random', 're', 'scm', 'subprocess',
147 'sys', 'tempfile', 'time', 'traceback', 'types', 'unittest', 'urllib2', 148 'sys', 'tempfile', 'time', 'traceback', 'types', 'unittest', 'urllib2',
148 'warn', 149 'warn',
149 ] 150 ]
(...skipping 1813 matching lines...) Expand 10 before | Expand all | Expand 10 after
1963 def testCannedCheckOwners_MissingSchemeInHostURL(self): 1964 def testCannedCheckOwners_MissingSchemeInHostURL(self):
1964 self.OwnersTest(is_committing=True, 1965 self.OwnersTest(is_committing=True,
1965 approvers=set(['ben@example.com']), 1966 approvers=set(['ben@example.com']),
1966 uncovered_files=set(), host_url='localhost') 1967 uncovered_files=set(), host_url='localhost')
1967 1968
1968 def testCannedCheckOwners_HTTPS_HostURL(self): 1969 def testCannedCheckOwners_HTTPS_HostURL(self):
1969 self.OwnersTest(is_committing=True, 1970 self.OwnersTest(is_committing=True,
1970 approvers=set(['ben@example.com']), 1971 approvers=set(['ben@example.com']),
1971 uncovered_files=set(), host_url='https://localhost') 1972 uncovered_files=set(), host_url='https://localhost')
1972 1973
1973 1974
M-A Ruel 2011/03/22 17:24:16 only 2 lines.
1975
1976 class ChangeDescriptionTests(unittest.TestCase):
1977 def setUp(self):
1978 self.editor_input = None
1979 self.editor_output = None
1980
1981 def tearDown(self):
1982 self.editor_input = None
1983 self.editor_output = None
1984
1985 def change_desc(self, editor=None, **kwargs):
1986 if editor is None:
1987 editor = lambda x: x
1988 return presubmit.ChangeDescription(editor=editor, **kwargs)
1989
1990 def editor(self, text):
1991 if self.editor_input:
1992 self.assertTrue(self.editor_input in text)
1993 if self.editor_output is not None:
1994 return self.editor_output
1995 return text
1996
1997 def test_empty(self):
1998 desc = self.change_desc()
1999 self.assertTrue(desc.IsEmpty())
2000 desc.UserEdit()
2001 self.assertTrue(desc.IsEmpty())
2002
2003 def test_basic(self):
2004 desc = self.change_desc(subject='foo', description='desc',
2005 reviewers=['joe@example.com'])
2006 desc.UserEdit()
2007 self.assertFalse(desc.IsEmpty())
2008 self.assertEqual(desc.subject, 'foo')
2009 self.assertEquals(desc.description,
2010 'foo\n'
2011 '\n'
2012 'desc\n'
2013 '\n'
2014 'R=joe@example.com')
2015 self.assertEquals(desc.reviewers, ['joe@example.com'])
2016 self.assertFalse(desc.tbr)
2017
2018 def test_subject_only(self):
2019 self.editor_input = 'foo\n\nR=\nBUG=\nTEST=\n'
2020 desc = self.change_desc(subject='foo', editor=self.editor)
2021 desc.UserEdit()
2022 self.assertEquals(desc.description, 'foo')
2023
2024 def test_tbr_with_reviewer(self):
2025 self.editor_input = 'TBR=\nBUG=\nTEST=\n'
2026 self.editor_output = 'foo\n\nTBR=joe@example.com'
2027 desc = self.change_desc(tbr=True, editor=self.editor)
2028 self.assertFalse(desc.tbr)
2029 self.assertEquals(desc.reviewers, [])
2030 desc.UserEdit()
2031 self.assertTrue(desc.tbr)
2032 self.assertEquals(desc.reviewers, ['joe@example.com'])
2033 self.assertEquals(desc.description,
2034 'foo\n'
2035 '\n'
2036 'TBR=joe@example.com')
2037
2038 def test_tbr_without_reviewer(self):
2039 desc = self.change_desc(subject='foo', tbr=True)
2040 desc.UserEdit()
2041 self.assertEquals(desc.description, 'foo\n\nTBR=')
2042
2043 def test_really_long_subject(self):
2044 subject = 'foo' * 40
2045 desc = self.change_desc(subject=subject)
2046 self.assertEquals(desc.description, subject)
2047 self.assertEquals(desc.subject, subject[:97] + '...')
2048
2049
1974 if __name__ == '__main__': 2050 if __name__ == '__main__':
1975 import unittest 2051 import unittest
1976 unittest.main() 2052 unittest.main()
OLDNEW
« presubmit_support.py ('K') | « tests/gclient_utils_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698