PRESUBMIT #include check: don't add a warning if we're committing.
This enables the commit queue to commit patches where the #include order is "wrong" according to the check. NOTRY=true BUG= Review URL: https://chromiumcodereview.appspot.com/11496010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172084 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@ -619,8 +619,13 @@ def _CheckIncludeOrder(input_api, output_api):
|
||||
|
||||
results = []
|
||||
if warnings:
|
||||
results.append(output_api.PresubmitPromptWarning(_INCLUDE_ORDER_WARNING,
|
||||
warnings))
|
||||
if not input_api.is_committing:
|
||||
results.append(output_api.PresubmitPromptWarning(_INCLUDE_ORDER_WARNING,
|
||||
warnings))
|
||||
else:
|
||||
# We don't warn on commit, to avoid stopping commits going through CQ.
|
||||
results.append(output_api.PresubmitNotifyResult(_INCLUDE_ORDER_WARNING,
|
||||
warnings))
|
||||
return results
|
||||
|
||||
|
||||
|
@ -15,6 +15,7 @@ class MockInputApi(object):
|
||||
self.re = re
|
||||
self.os_path = os.path
|
||||
self.files = []
|
||||
self.is_committing = False
|
||||
|
||||
def AffectedFiles(self):
|
||||
return self.files
|
||||
@ -30,14 +31,17 @@ class MockOutputApi(object):
|
||||
class PresubmitError(PresubmitResult):
|
||||
def __init__(self, message, items, long_text=''):
|
||||
MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
|
||||
self.type = 'error'
|
||||
|
||||
class PresubmitPromptWarning(PresubmitResult):
|
||||
def __init__(self, message, items, long_text=''):
|
||||
MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
|
||||
self.type = 'warning'
|
||||
|
||||
class PresubmitNotifyResult(PresubmitResult):
|
||||
def __init__(self, message, items, long_text=''):
|
||||
MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
|
||||
self.type = 'notify'
|
||||
|
||||
|
||||
class MockFile(object):
|
||||
@ -234,6 +238,19 @@ class IncludeOrderTest(unittest.TestCase):
|
||||
warnings = PRESUBMIT._CheckIncludeOrder(mock_input_api, mock_output_api)
|
||||
self.assertEqual(1, len(warnings))
|
||||
self.assertEqual(2, len(warnings[0].items))
|
||||
self.assertEqual('warning', warnings[0].type)
|
||||
|
||||
def testOnlyNotifyOnCommit(self):
|
||||
mock_input_api = MockInputApi()
|
||||
mock_input_api.is_committing = True
|
||||
mock_output_api = MockOutputApi()
|
||||
contents = ['#include <b.h>',
|
||||
'#include <a.h>']
|
||||
mock_input_api.files = [MockFile('something.cc', contents)]
|
||||
warnings = PRESUBMIT._CheckIncludeOrder(mock_input_api, mock_output_api)
|
||||
self.assertEqual(1, len(warnings))
|
||||
self.assertEqual(1, len(warnings[0].items))
|
||||
self.assertEqual('notify', warnings[0].type)
|
||||
|
||||
|
||||
class VersionControlerConflictsTest(unittest.TestCase):
|
||||
|
Reference in New Issue
Block a user