-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Copyright 2012 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import re
-USE_PYTHON3 = True
+PRESUBMIT_VERSION = '2.0.0'
+
CC_SOURCE_FILES=(r'^cc[\\/].*\.(cc|h)$',)
-def CheckChangeLintsClean(input_api, output_api):
+def _CheckChangeLintsClean(input_api, output_api):
allowlist = CC_SOURCE_FILES
denylist = None
source_filter = lambda x: input_api.FilterSourceFile(x, allowlist, denylist)
return input_api.canned_checks.CheckChangeLintsClean(
input_api, output_api, source_filter, lint_filters=[], verbose_level=1)
-def CheckAsserts(input_api, output_api, allowlist=CC_SOURCE_FILES,
+def _CheckAsserts(input_api, output_api, allowlist=CC_SOURCE_FILES,
denylist=None):
denylist = tuple(denylist or input_api.DEFAULT_FILES_TO_SKIP)
source_file_filter = lambda x: input_api.FilterSourceFile(x, allowlist,
items=assert_files)]
return []
-def CheckStdAbs(input_api, output_api,
+def _CheckStdAbs(input_api, output_api,
allowlist=CC_SOURCE_FILES, denylist=None):
denylist = tuple(denylist or input_api.DEFAULT_FILES_TO_SKIP)
source_file_filter = lambda x: input_api.FilterSourceFile(x,
items=missing_std_prefix_files))
return result
-def CheckPassByValue(input_api,
+def _CheckPassByValue(input_api,
output_api,
allowlist=CC_SOURCE_FILES,
denylist=None):
(f.LocalPath(), match.group('type'))))
return local_errors
-def CheckTodos(input_api, output_api):
+def _CheckTodos(input_api, output_api):
errors = []
source_file_filter = lambda x: x
items=errors)]
return []
-def CheckDoubleAngles(input_api, output_api, allowlist=CC_SOURCE_FILES,
+def _CheckDoubleAngles(input_api, output_api, allowlist=CC_SOURCE_FILES,
denylist=None):
errors = []
return [output_api.PresubmitError('Use >> instead of > >:', items=errors)]
return []
-def FindUnquotedQuote(contents, pos):
+def _FindUnquotedQuote(contents, pos):
match = re.search(r"(?<!\\)(?P<quote>\")", contents[pos:])
return -1 if not match else match.start("quote") + pos
-def FindUselessIfdefs(input_api, output_api):
+def _FindUselessIfdefs(input_api, output_api):
errors = []
source_file_filter = lambda x: x
for f in input_api.AffectedSourceFiles(source_file_filter):
items=errors)]
return []
-def FindNamespaceInBlock(pos, namespace, contents, allowlist=[]):
+def _FindNamespaceInBlock(pos, namespace, contents, allowlist=[]):
open_brace = -1
close_brace = -1
quote = -1
while pos < len(contents) and brace_count > 0:
if open_brace < pos: open_brace = contents.find("{", pos)
if close_brace < pos: close_brace = contents.find("}", pos)
- if quote < pos: quote = FindUnquotedQuote(contents, pos)
+ if quote < pos: quote = _FindUnquotedQuote(contents, pos)
if name < pos: name = contents.find(("%s::" % namespace), pos)
if name < 0:
# Checks for the use of cc:: within the cc namespace, which is usually
# redundant.
-def CheckNamespace(input_api, output_api):
+def _CheckNamespace(input_api, output_api):
errors = []
source_file_filter = lambda x: x
match = re.search(r'namespace\s*cc\s*{', contents)
if match:
allowlist = []
- if FindNamespaceInBlock(match.end(), 'cc', contents, allowlist=allowlist):
+ if _FindNamespaceInBlock(match.end(),
+ 'cc',
+ contents,
+ allowlist=allowlist):
errors.append(f.LocalPath())
if errors:
items=errors)]
return []
-def CheckForUseOfWrongClock(input_api,
+def _CheckForUseOfWrongClock(input_api,
output_api,
allowlist=CC_SOURCE_FILES,
denylist=None):
else:
return []
-def CheckForDisallowMacros(input_api, output_api, allowlist=CC_SOURCE_FILES,
- denylist=None):
- denylist = tuple(denylist or input_api.DEFAULT_FILES_TO_SKIP)
- source_file_filter = lambda x: input_api.FilterSourceFile(x, allowlist,
- denylist)
-
- disallow_macro_files = []
-
- for f in input_api.AffectedSourceFiles(source_file_filter):
- contents = input_api.ReadFile(f, 'rb')
- # DISALLOW macros are not allowed, use deleted constructors instead.
- if re.search(r"\bDISALLOW_COPY\(", contents) or \
- re.search(r"\bDISALLOW_ASSIGN\(", contents) or \
- re.search(r"\bDISALLOW_COPY_AND_ASSIGN\(", contents) or \
- re.search(r"\bDISALLOW_IMPLICIT_CONSTRUCTORS\(", contents):
- disallow_macro_files.append(f.LocalPath())
-
- if disallow_macro_files:
- return [output_api.PresubmitError(
- 'The following files use DISALLOW* macros. In cc, please use deleted '
- 'constructors/operators instead.',
- items=disallow_macro_files)]
- return []
-
def CheckChangeOnUpload(input_api, output_api):
results = []
- results += CheckAsserts(input_api, output_api)
- results += CheckStdAbs(input_api, output_api)
- results += CheckPassByValue(input_api, output_api)
- results += CheckChangeLintsClean(input_api, output_api)
- results += CheckTodos(input_api, output_api)
- results += CheckDoubleAngles(input_api, output_api)
- results += CheckNamespace(input_api, output_api)
- results += CheckForUseOfWrongClock(input_api, output_api)
- results += FindUselessIfdefs(input_api, output_api)
- results += CheckForDisallowMacros(input_api, output_api)
+ results += _CheckAsserts(input_api, output_api)
+ results += _CheckStdAbs(input_api, output_api)
+ results += _CheckPassByValue(input_api, output_api)
+ results += _CheckChangeLintsClean(input_api, output_api)
+ results += _CheckTodos(input_api, output_api)
+ results += _CheckDoubleAngles(input_api, output_api)
+ results += _CheckNamespace(input_api, output_api)
+ results += _CheckForUseOfWrongClock(input_api, output_api)
+ results += _FindUselessIfdefs(input_api, output_api)
return results