| Index: net/spdy/PRESUBMIT.py
|
| diff --git a/net/spdy/PRESUBMIT.py b/net/spdy/PRESUBMIT.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3a8e27c12860a056ff64f2ef41445be932afe00c
|
| --- /dev/null
|
| +++ b/net/spdy/PRESUBMIT.py
|
| @@ -0,0 +1,64 @@
|
| +# Copyright 2017 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import re
|
| +
|
| +def CheckForbiddenRegex(change, forbidden_regex, message_type, message):
|
| + problems = []
|
| + for path, change_per_file in change:
|
| + line_num = 1
|
| + for line in change_per_file:
|
| + if forbidden_regex.match(line):
|
| + problems.extend([" %s:%d" % (path, line_num)])
|
| + line_num += 1
|
| + if not problems:
|
| + return []
|
| + return [message_type(message + ":\n" + "\n".join(problems))]
|
| +
|
| +
|
| +def CheckChange(input_api, message_type):
|
| + result = []
|
| + shared_source_files = re.compile("^net/spdy/(core|platform/api)/.*\.(h|cc)$")
|
| + change = [(affected_file.LocalPath(), affected_file.NewContents())
|
| + for affected_file in input_api.AffectedTestableFiles()
|
| + if shared_source_files.match(affected_file.LocalPath())]
|
| + forbidden_regex_list = [
|
| + r"^#include \"net/base/net_export.h\"$",
|
| + r"\bNET_EXPORT\b",
|
| + r"\bNET_EXPORT_PRIVATE\b",
|
| + "^#include <string>$",
|
| + r"\bstd::string\b",
|
| + r"^#include \"base/strings/string_piece.h\"$",
|
| + r"\bbase::StringPiece\b",
|
| + r"\bbase::StringPrintf\b",
|
| + r"\bbase::StringAppendF\b",
|
| + r"\bbase::HexDigitToInt\b",
|
| + ]
|
| + messages = [
|
| + "Include \"spdy/platform/api/spdy_export.h\" "
|
| + "instead of \"net/base/net_export.h\"",
|
| + "Use SPDY_EXPORT instead of NET_EXPORT",
|
| + "Use SPDY_EXPORT_PRIVATE instead of NET_EXPORT_PRIVATE",
|
| + "Include \"spdy/platform/api/spdy_string.h\" instead of <string>",
|
| + "Use SpdyString instead of std::string",
|
| + "Include \"spdy/platform/api/spdy_string_piece.h\" "
|
| + "instead of \"base/strings/string_piece.h\"",
|
| + "Use SpdyStringPiece instead of base::StringPiece",
|
| + "Use SpdyStringPrintf instead of base::StringPrintf",
|
| + "Use SpdyStringAppendF instead of base::StringAppendF",
|
| + "Use SpdyHexDigitToInt instead of base::HexDigitToInt",
|
| + ]
|
| + for forbidden_regex, message in zip(forbidden_regex_list, messages):
|
| + result.extend(CheckForbiddenRegex(
|
| + change, re.compile(forbidden_regex), message_type, message))
|
| + return result
|
| +
|
| +# Warn before uploading but allow developer to skip warning
|
| +# so that CLs can be shared and reviewed before addressing all issues.
|
| +def CheckChangeOnUpload(input_api, output_api):
|
| + return CheckChange(input_api, output_api.PresubmitPromptWarning)
|
| +
|
| +# Do not allow code with forbidden patterns to be checked in.
|
| +def CheckChangeOnCommit(input_api, output_api):
|
| + return CheckChange(input_api, output_api.PresubmitError)
|
|
|