diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-05-03 13:42:47 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-05-15 10:27:51 +0000 |
commit | 8c5c43c7b138c9b4b0bf56d946e61d3bbc111bec (patch) | |
tree | d29d987c4d7b173cf853279b79a51598f104b403 /chromium/v8/PRESUBMIT.py | |
parent | 830c9e163d31a9180fadca926b3e1d7dfffb5021 (diff) | |
download | qtwebengine-chromium-8c5c43c7b138c9b4b0bf56d946e61d3bbc111bec.tar.gz |
BASELINE: Update Chromium to 66.0.3359.156
Change-Id: I0c9831ad39911a086b6377b16f995ad75a51e441
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'chromium/v8/PRESUBMIT.py')
-rw-r--r-- | chromium/v8/PRESUBMIT.py | 92 |
1 files changed, 57 insertions, 35 deletions
diff --git a/chromium/v8/PRESUBMIT.py b/chromium/v8/PRESUBMIT.py index b69e8f50891..e6dbb793956 100644 --- a/chromium/v8/PRESUBMIT.py +++ b/chromium/v8/PRESUBMIT.py @@ -153,6 +153,62 @@ def _CheckUnwantedDependencies(input_api, output_api): return results +def _CheckHeadersHaveIncludeGuards(input_api, output_api): + """Ensures that all header files have include guards.""" + file_inclusion_pattern = r'src/.+\.h' + + def FilterFile(affected_file): + black_list = (_EXCLUDED_PATHS + + input_api.DEFAULT_BLACK_LIST) + return input_api.FilterSourceFile( + affected_file, + white_list=(file_inclusion_pattern, ), + black_list=black_list) + + leading_src_pattern = input_api.re.compile(r'^src/') + dash_dot_slash_pattern = input_api.re.compile(r'[-./]') + def PathToGuardMacro(path): + """Guards should be of the form V8_PATH_TO_FILE_WITHOUT_SRC_H_.""" + x = input_api.re.sub(leading_src_pattern, 'v8_', path) + x = input_api.re.sub(dash_dot_slash_pattern, '_', x) + x = x.upper() + "_" + return x + + problems = [] + for f in input_api.AffectedSourceFiles(FilterFile): + local_path = f.LocalPath() + guard_macro = PathToGuardMacro(local_path) + guard_patterns = [ + input_api.re.compile(r'^#ifndef ' + guard_macro + '$'), + input_api.re.compile(r'^#define ' + guard_macro + '$'), + input_api.re.compile(r'^#endif // ' + guard_macro + '$')] + skip_check_pattern = input_api.re.compile( + r'^// PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD') + found_patterns = [ False, False, False ] + file_omitted = False + + for line in f.NewContents(): + for i in range(len(guard_patterns)): + if guard_patterns[i].match(line): + found_patterns[i] = True + if skip_check_pattern.match(line): + file_omitted = True + break + + if not file_omitted and not all(found_patterns): + problems.append( + '%s: Missing include guard \'%s\'' % (local_path, guard_macro)) + + if problems: + return [output_api.PresubmitError( + 'You added one or more header files without an appropriate\n' + 'include guard. Add the include guard {#ifndef,#define,#endif}\n' + 'triplet or omit the check entirely through the magic comment:\n' + '"// PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD".', problems)] + else: + return [] + + # TODO(mstarzinger): Similar checking should be made available as part of # tools/presubmit.py (note that tools/check-inline-includes.sh exists). def _CheckNoInlineHeaderIncludesInNormalHeaders(input_api, output_api): @@ -230,44 +286,10 @@ def _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api): return [] -def _CheckMissingFiles(input_api, output_api): - """Runs verify_source_deps.py to ensure no files were added that are not in - GN. - """ - # We need to wait until we have an input_api object and use this - # roundabout construct to import checkdeps because this file is - # eval-ed and thus doesn't have __file__. - original_sys_path = sys.path - try: - sys.path = sys.path + [input_api.os_path.join( - input_api.PresubmitLocalPath(), 'tools')] - from verify_source_deps import missing_gn_files, missing_gyp_files - finally: - # Restore sys.path to what it was before. - sys.path = original_sys_path - - gn_files = missing_gn_files() - gyp_files = missing_gyp_files() - results = [] - if gn_files: - results.append(output_api.PresubmitError( - "You added one or more source files but didn't update the\n" - "corresponding BUILD.gn files:\n", - gn_files)) - if gyp_files: - results.append(output_api.PresubmitError( - "You added one or more source files but didn't update the\n" - "corresponding gyp files:\n", - gyp_files)) - return results - - def _CommonChecks(input_api, output_api): """Checks common to both upload and commit.""" results = [] results.extend(_CheckCommitMessageBugEntry(input_api, output_api)) - results.extend(input_api.canned_checks.CheckOwners( - input_api, output_api, source_file_filter=None)) results.extend(input_api.canned_checks.CheckPatchFormatted( input_api, output_api)) results.extend(input_api.canned_checks.CheckGenderNeutral( @@ -276,9 +298,9 @@ def _CommonChecks(input_api, output_api): results.extend(_CheckUnwantedDependencies(input_api, output_api)) results.extend( _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api)) + results.extend(_CheckHeadersHaveIncludeGuards(input_api, output_api)) results.extend( _CheckNoInlineHeaderIncludesInNormalHeaders(input_api, output_api)) - results.extend(_CheckMissingFiles(input_api, output_api)) results.extend(_CheckJSONFiles(input_api, output_api)) results.extend(_CheckMacroUndefs(input_api, output_api)) results.extend(input_api.RunTests( |