blob: e57e28c6164f014d93a94dd50fa02e393d313cd3 [file]
# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Top-level presubmit for //net
See https://www.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details about the presubmit API built into depot_tools.
"""
PRESUBMIT_VERSION = '2.0.0'
# This is similar to the standard runtime/int check but allows exceptions for
# platform-specific code, as platform APIs often use types that are disallowed
# by the style guide.
def CheckNoShortKeywordInNet(input_api, output_api):
"""
Prohibit the use of the "short" keyword in platform-independent //net code.
"""
problems = []
platform_suffixes = ('_android', '_apple', '_chromeos', '_fuchsia', '_ios',
'_linux', '_mac', '_openbsd', '_posix', '_win')
platform_subdirs = {
'android', 'apple', 'chromeos', 'fuchsia', 'ios', 'linux', 'mac',
'openbsd', 'posix', 'win'
}
for f in input_api.AffectedSourceFiles(None):
local_path = f.LocalPath().replace('\\', '/')
if not local_path.startswith('net/'):
continue
if not local_path.endswith(('.cc', '.h')):
continue
path_parts = local_path.split('/')
if any(part in platform_subdirs for part in path_parts[:-1]):
continue
basename = input_api.os_path.splitext(path_parts[-1])[0]
if basename.endswith(platform_suffixes):
continue
for line_number, line in f.ChangedContents():
if input_api.re.search(r'\bshort\b', line):
problems.append(
f'{local_path}:{line_number}\n {line.strip()}')
if problems:
return [
output_api.PresubmitError(
'Do not use the "short" keyword in platform-independent //net '
'code. Use int16_t or uint16_t instead.', problems)
]
return []
def CheckChange(input_api, output_api):
import sys
old_sys_path = sys.path[:]
results = []
try:
sys.path.append(input_api.change.RepositoryRoot())
from build.ios import presubmit_support
results += presubmit_support.CheckBundleData(
input_api,
output_api,
'data/test_bundle_data',
globroot='.')
results += presubmit_support.CheckBundleData(
input_api,
output_api,
'data/test_support_bundle_data',
globroot='.')
results += CheckNoShortKeywordInNet(input_api, output_api)
finally:
sys.path = old_sys_path
return results