| Index: tests/presubmit_unittest.py
|
| diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py
|
| index d47e1d0b184d1bd64fd3cc66d499926b3926bf4d..3eac774abaae7d19139a2e93039a5d929e6d2ea6 100755
|
| --- a/tests/presubmit_unittest.py
|
| +++ b/tests/presubmit_unittest.py
|
| @@ -9,6 +9,7 @@
|
| # pylint: disable=E1101,E1103,W0212,W0403
|
|
|
| import StringIO
|
| +import unittest
|
|
|
| # Fixes include path.
|
| from super_mox import mox, SuperMoxTestBase
|
| @@ -135,8 +136,8 @@ class PresubmitUnittest(PresubmitTestsBase):
|
| def testMembersChanged(self):
|
| self.mox.ReplayAll()
|
| members = [
|
| - 'AffectedFile', 'Change', 'DoGetTrySlaves', 'DoPresubmitChecks',
|
| - 'GetTrySlavesExecuter', 'GitAffectedFile',
|
| + 'AffectedFile', 'Change', 'ChangeDescription', 'DoGetTrySlaves',
|
| + 'DoPresubmitChecks', 'GetTrySlavesExecuter', 'GitAffectedFile',
|
| 'GitChange', 'InputApi', 'ListRelevantPresubmitFiles', 'Main',
|
| 'NotImplementedException', 'OutputApi', 'ParseFiles',
|
| 'PresubmitExecuter', 'PresubmitOutput', 'ScanSubDirs',
|
| @@ -2004,6 +2005,81 @@ mac|success|blew
|
|
|
|
|
|
|
| +def change_desc(editor=None, **kwargs):
|
| + if editor is None:
|
| + editor = lambda x: x
|
| + return presubmit.ChangeDescription(editor=editor, **kwargs)
|
| +
|
| +
|
| +class ChangeDescriptionTests(unittest.TestCase):
|
| + def setUp(self):
|
| + self.editor_input = None
|
| + self.editor_output = None
|
| +
|
| + def tearDown(self):
|
| + self.editor_input = None
|
| + self.editor_output = None
|
| +
|
| + def editor(self, text):
|
| + if self.editor_input:
|
| + self.assertTrue(self.editor_input in text)
|
| + if self.editor_output is not None:
|
| + return self.editor_output
|
| + return text
|
| +
|
| + def test_empty(self):
|
| + desc = change_desc()
|
| + self.assertTrue(desc.IsEmpty())
|
| + desc.UserEdit()
|
| + self.assertTrue(desc.IsEmpty())
|
| +
|
| + def test_basic(self):
|
| + desc = change_desc(subject='foo', description='desc',
|
| + reviewers=['joe@example.com'])
|
| + desc.UserEdit()
|
| + self.assertFalse(desc.IsEmpty())
|
| + self.assertEqual(desc.subject, 'foo')
|
| + self.assertEquals(desc.description,
|
| + 'foo\n'
|
| + '\n'
|
| + 'desc\n'
|
| + '\n'
|
| + 'R=joe@example.com')
|
| + self.assertEquals(desc.reviewers, ['joe@example.com'])
|
| + self.assertFalse(desc.tbr)
|
| +
|
| + def test_subject_only(self):
|
| + self.editor_input = 'foo\n\nR=\nBUG=\nTEST=\n'
|
| + desc = change_desc(subject='foo', editor=self.editor)
|
| + desc.UserEdit()
|
| + self.assertEquals(desc.description, 'foo')
|
| +
|
| + def test_tbr_with_reviewer(self):
|
| + self.editor_input = 'TBR=\nBUG=\nTEST=\n'
|
| + self.editor_output = 'foo\n\nTBR=joe@example.com'
|
| + desc = change_desc(tbr=True, editor=self.editor)
|
| + self.assertFalse(desc.tbr)
|
| + self.assertEquals(desc.reviewers, [])
|
| + desc.UserEdit()
|
| + self.assertTrue(desc.tbr)
|
| + self.assertEquals(desc.reviewers, ['joe@example.com'])
|
| + self.assertEquals(desc.description,
|
| + 'foo\n'
|
| + '\n'
|
| + 'TBR=joe@example.com')
|
| +
|
| + def test_tbr_without_reviewer(self):
|
| + desc = change_desc(subject='foo', tbr=True)
|
| + desc.UserEdit()
|
| + self.assertEquals(desc.description, 'foo\n\nTBR=')
|
| +
|
| + def test_really_long_subject(self):
|
| + subject = 'foo' * 40
|
| + desc = change_desc(subject=subject)
|
| + self.assertEquals(desc.description, subject)
|
| + self.assertEquals(desc.subject, subject[:97] + '...')
|
| +
|
| +
|
| if __name__ == '__main__':
|
| import unittest
|
| unittest.main()
|
|
|