-# 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 CheckIpcUpdatedWithMojo(input_api, output_api):
- """Make sure IPC is updated whenever Mojo serialization is updated"""
- def match_ipc(affected_file):
- match = re.match(r'.*_param_traits.*', affected_file.LocalPath())
- return match is not None
-
- def match_mojo(affected_file):
- mojo_patterns = (r'.*_struct_traits.*', r'.*\.mojom$', r'.*\.typemap$')
- matches = (re.match(pattern, affected_file.LocalPath())
- for pattern in mojo_patterns)
- return any(matches)
-
- ipc_files = input_api.AffectedFiles(file_filter=match_ipc)
- mojo_files = input_api.AffectedFiles(file_filter=match_mojo)
- if mojo_files and not ipc_files:
- return [output_api.PresubmitPromptOrNotify(
- 'Make sure to update IPC ParamTraits along with mojo types.\n\n'),]
- 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 += CheckIpcUpdatedWithMojo(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
-
-def PostUploadHook(cl, change, output_api):
- """git cl upload will call this hook after the issue is created/modified.
-
- This hook adds an extra try bot list to the CL description in order to run
- Blink tests and additional GPU tests in addition to the CQ try bots.
- """
- return output_api.EnsureCQIncludeTrybotsAreAdded(
- cl,
- [
- 'master.tryserver.blink:linux_trusty_blink_rel',
- 'luci.chromium.try:android_optional_gpu_tests_rel',
- ],
- 'Automatically added Blink and Android GPU trybots for CQ.')