-# 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
-import string
+
+PRESUBMIT_VERSION = '2.0.0'
CC_SOURCE_FILES=(r'^cc[\\/].*\.(cc|h)$',)
-def CheckChangeLintsClean(input_api, output_api):
- source_filter = lambda x: input_api.FilterSourceFile(
- x, white_list=CC_SOURCE_FILES, black_list=None)
+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, white_list=CC_SOURCE_FILES, black_list=None):
- black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST)
- source_file_filter = lambda x: input_api.FilterSourceFile(x, white_list, black_list)
+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,
+ denylist)
assert_files = []
items=assert_files)]
return []
-def CheckStdAbs(input_api, output_api,
- white_list=CC_SOURCE_FILES, black_list=None):
- black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST)
+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,
- white_list,
- black_list)
+ allowlist,
+ denylist)
using_std_abs_files = []
found_fabs_files = []
items=missing_std_prefix_files))
return result
-def CheckPassByValue(input_api,
+def _CheckPassByValue(input_api,
output_api,
- white_list=CC_SOURCE_FILES,
- black_list=None):
- black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST)
+ 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,
- white_list,
- black_list)
+ allowlist,
+ denylist)
local_errors = []
for f in input_api.AffectedSourceFiles(source_file_filter):
contents = input_api.ReadFile(f, 'rb')
+ sep = '|'
match = re.search(
- r'\bconst +' + '(?P<type>(%s))&' %
- string.join(pass_by_value_types, '|'),
+ r'\bconst +' + '(?P<type>(%s))&' % sep.join(pass_by_value_types),
contents)
if match:
local_errors.append(output_api.PresubmitError(
(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, white_list=CC_SOURCE_FILES,
- black_list=None):
+def _CheckDoubleAngles(input_api, output_api, allowlist=CC_SOURCE_FILES,
+ denylist=None):
errors = []
source_file_filter = lambda x: input_api.FilterSourceFile(x,
- white_list,
- black_list)
+ allowlist,
+ denylist)
for f in input_api.AffectedSourceFiles(source_file_filter):
contents = input_api.ReadFile(f, 'rb')
if ('> >') in contents:
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, whitelist=[]):
+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:
elif next == quote:
quote_count = 0 if quote_count else 1
elif next == name and not quote_count:
- in_whitelist = False
- for w in whitelist:
+ in_allowlist = False
+ for w in allowlist:
if re.match(w, contents[next:]):
- in_whitelist = True
+ in_allowlist = True
break
- if not in_whitelist:
+ if not in_allowlist:
return True
pos = next + 1
return False
# 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
contents = input_api.ReadFile(f, 'rb')
match = re.search(r'namespace\s*cc\s*{', contents)
if match:
- whitelist = []
- if FindNamespaceInBlock(match.end(), 'cc', contents, whitelist=whitelist):
+ 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,
- white_list=CC_SOURCE_FILES,
- black_list=None):
+ allowlist=CC_SOURCE_FILES,
+ denylist=None):
"""Make sure new lines of code don't use a clock susceptible to skew."""
- black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST)
+ denylist = tuple(denylist or input_api.DEFAULT_FILES_TO_SKIP)
source_file_filter = lambda x: input_api.FilterSourceFile(x,
- white_list,
- black_list)
+ allowlist,
+ denylist)
# Regular expression that should detect any explicit references to the
# base::Time type (or base::Clock/DefaultClock), whether in using decls,
# typedefs, or to call static methods.
else:
return []
-def CheckForDisallowMacros(input_api, output_api, white_list=CC_SOURCE_FILES, black_list=None):
- black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST)
- source_file_filter = lambda x: input_api.FilterSourceFile(x, white_list, black_list)
-
- 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