diff --git a/presubmit.py b/presubmit.py index 7df76753b7..fbd0e0bba5 100755 --- a/presubmit.py +++ b/presubmit.py @@ -51,7 +51,8 @@ _tag_line_re = re.compile( SPECIAL_KEYS = { 'Reviewers' : 'R', 'BugIDs' : 'BUG', - 'Tested': 'TESTED' + 'Tested': 'TESTED', + 'Test': 'TEST' } diff --git a/presubmit_canned_checks.py b/presubmit_canned_checks.py index b2a8b20295..c1f9f16662 100755 --- a/presubmit_canned_checks.py +++ b/presubmit_canned_checks.py @@ -6,6 +6,24 @@ """Generic presubmit checks that can be reused by other presubmit checks.""" +def CheckChangeHasTestField(input_api, output_api): + """Requires that the changelist have a TEST= field.""" + if input_api.change.Test: + return [] + else: + return [output_api.PresubmitNotifyResult( + "Changelist should have a TEST= field. TEST=none is allowed.")] + + +def CheckChangeHasBugField(input_api, output_api): + """Requires that the changelist have a BUG= field.""" + if input_api.change.BugIDs: + return [] + else: + return [output_api.PresubmitNotifyResult( + "Changelist should have a BUG= field. BUG=none is allowed.")] + + def CheckChangeHasTestedField(input_api, output_api): """Requires that the changelist have a TESTED= field.""" if input_api.change.Tested: diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py index 20021b13e5..5f9e735dc2 100755 --- a/tests/presubmit_unittest.py +++ b/tests/presubmit_unittest.py @@ -584,14 +584,41 @@ class CannedChecksUnittest(PresubmitTestsBase): def testMembersChanged(self): members = [ - 'CheckChangeHasNoTabs', 'CheckChangeHasQaField', - 'CheckChangeHasTestedField', 'CheckDoNotSubmit', + 'CheckChangeHasBugField', 'CheckChangeHasNoTabs', + 'CheckChangeHasQaField', 'CheckChangeHasTestedField', + 'CheckChangeHasTestField', 'CheckDoNotSubmit', 'CheckDoNotSubmitInDescription', 'CheckDoNotSubmitInFiles', 'CheckLongLines', 'CheckTreeIsOpen', ] # If this test fails, you should add the relevant test. self.compareMembers(presubmit_canned_checks, members) + def testCannedCheckChangeHasBugField(self): + change = self.MakeBasicChange('foo', + 'Foo\nBUG=1234') + api = presubmit.InputApi(change, 'PRESUBMIT.py') + self.failIf(presubmit_canned_checks.CheckChangeHasBugField( + api, presubmit.OutputApi)) + + change = self.MakeBasicChange('foo', + 'Foo\nNEVERTESTED=did some stuff') + api = presubmit.InputApi(change, 'PRESUBMIT.py') + self.failUnless(presubmit_canned_checks.CheckChangeHasBugField( + api, presubmit.OutputApi)) + + def testCannedCheckChangeHasTestField(self): + change = self.MakeBasicChange('foo', + 'Foo\nTEST=did some stuff') + api = presubmit.InputApi(change, 'PRESUBMIT.py') + self.failIf(presubmit_canned_checks.CheckChangeHasTestField( + api, presubmit.OutputApi)) + + change = self.MakeBasicChange('foo', + 'Foo\nNOTEST=did some stuff') + api = presubmit.InputApi(change, 'PRESUBMIT.py') + self.failUnless(presubmit_canned_checks.CheckChangeHasTestField( + api, presubmit.OutputApi)) + def testCannedCheckChangeHasTestedField(self): change = self.MakeBasicChange('foo', 'Foo\nTESTED=did some stuff')