| Index: tests/presubmit_unittest.py
|
| diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py
|
| index 6797defb582cf702d69d1a3c59c2712704ccc85d..e61ca6cfa5ae437b0f6d0f5640da1a3f3d2af6f4 100755
|
| --- a/tests/presubmit_unittest.py
|
| +++ b/tests/presubmit_unittest.py
|
| @@ -13,6 +13,7 @@ import StringIO
|
| # Fixes include path.
|
| from super_mox import mox, SuperMoxTestBase
|
|
|
| +import owners
|
| import presubmit_support as presubmit
|
| # Shortcut.
|
| presubmit_canned_checks = presubmit.presubmit_canned_checks
|
| @@ -1035,8 +1036,8 @@ class OuputApiUnittest(PresubmitTestsBase):
|
| def testMembersChanged(self):
|
| self.mox.ReplayAll()
|
| members = [
|
| - 'MailTextResult', 'PresubmitError', 'PresubmitNotifyResult',
|
| - 'PresubmitPromptWarning', 'PresubmitResult',
|
| + 'MailTextResult', 'PresubmitAddText', 'PresubmitError',
|
| + 'PresubmitNotifyResult', 'PresubmitPromptWarning', 'PresubmitResult',
|
| ]
|
| # If this test fails, you should add the relevant test.
|
| self.compareMembers(presubmit.OutputApi(), members)
|
| @@ -1053,10 +1054,20 @@ class OuputApiUnittest(PresubmitTestsBase):
|
| self.failIf(presubmit.OutputApi.PresubmitNotifyResult('').IsFatal())
|
| self.failIf(presubmit.OutputApi.PresubmitNotifyResult('').ShouldPrompt())
|
|
|
| + self.failIf(presubmit.OutputApi.PresubmitAddText('foo').IsFatal())
|
| + self.failIf(presubmit.OutputApi.PresubmitAddText('foo').ShouldPrompt())
|
| +
|
| # TODO(joi) Test MailTextResult once implemented.
|
|
|
| def testOutputApiHandling(self):
|
| self.mox.ReplayAll()
|
| +
|
| + output = StringIO.StringIO()
|
| + unused_input = StringIO.StringIO()
|
| + added_text = presubmit.OutputApi.PresubmitAddText('R=ben@example.com')
|
| + self.failUnless(added_text._Handle(output, unused_input))
|
| + self.failUnlessEqual(output.getvalue(), 'ADD: R=ben@example.com\n')
|
| +
|
| output = StringIO.StringIO()
|
| unused_input = StringIO.StringIO()
|
| error = presubmit.OutputApi.PresubmitError('!!!')
|
| @@ -1840,6 +1851,59 @@ mac|success|blew
|
| self.assertEquals(results[0].__class__,
|
| presubmit.OutputApi.PresubmitNotifyResult)
|
|
|
| + def OwnersTest(self, is_committing, change_tags=None,
|
| + suggested_reviewers=None, approvers=None,
|
| + uncovered_files=None, expected_results=None):
|
| + affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile)
|
| + affected_file.LocalPath().AndReturn('foo.cc')
|
| + change = self.mox.CreateMock(presubmit.Change)
|
| + change.AffectedFiles(None).AndReturn([affected_file])
|
| +
|
| + input_api = self.MockInputApi(change, False)
|
| + fake_db = self.mox.CreateMock(owners.Database)
|
| + input_api.owners_db = fake_db
|
| + input_api.is_committing = is_committing
|
| +
|
| + if is_committing:
|
| + change.approvers = approvers
|
| + fake_db.files_not_covered_by(set(['foo.cc']), approvers).AndReturn(
|
| + uncovered_files)
|
| + else:
|
| + change.tags = change_tags
|
| + if not change_tags.get('R'):
|
| + fake_db.reviewers_for(set(['foo.cc'])).AndReturn(suggested_reviewers)
|
| +
|
| + self.mox.ReplayAll()
|
| + results = presubmit_canned_checks.CheckOwners(input_api,
|
| + presubmit.OutputApi, None)
|
| + self.assertEquals(len(results), len(expected_results))
|
| + if results and expected_results:
|
| + output = StringIO.StringIO()
|
| + unused_input = StringIO.StringIO()
|
| + results[0]._Handle(output, unused_input)
|
| + self.assertEquals(output.getvalue(), expected_results[0])
|
| +
|
| + def testCannedCheckOwners_WithReviewer(self):
|
| + self.OwnersTest(is_committing=False, change_tags={'R': 'ben@example.com'},
|
| + expected_results=[])
|
| +
|
| + def testCannedCheckOwners_NoReviewer(self):
|
| + self.OwnersTest(is_committing=False, change_tags={},
|
| + suggested_reviewers=['ben@example.com'],
|
| + expected_results=['ADD: R=ben@example.com\n'])
|
| +
|
| + def testCannedCheckOwners_CommittingWithoutOwnerLGTM(self):
|
| + self.OwnersTest(is_committing=True,
|
| + approvers=set(),
|
| + uncovered_files=set(['foo.cc']),
|
| + expected_results=['Missing owner LGTM for: foo.cc\n'])
|
| +
|
| + def testCannedCheckOwners_CommittingWithLGTMs(self):
|
| + self.OwnersTest(is_committing=True,
|
| + approvers=set('ben@example.com'),
|
| + uncovered_files=set(),
|
| + expected_results=[])
|
| +
|
|
|
| if __name__ == '__main__':
|
| import unittest
|
|
|