0

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:
marja@chromium.org
2012-12-10 17:55:53 +00:00
parent b12f1be3de
commit 120cf540da
2 changed files with 24 additions and 2 deletions

@ -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):