blob: 4f13a4e9f637957c846d77ccc6d54089f5ebb179 [file] [log] [blame] [edit]
# Copyright 2025 The BoringSSL Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Presubmit checks for BoringSSL.
Run by the presubmit API in depot_tools, e.g. by running `git cl presubmit`.
"""
PRESUBMIT_VERSION = '2.0.0'
USE_PYTHON3 = True
def CheckPregeneratedFiles(input_api, output_api):
"""Checks that pregenerated files are properly updated."""
# TODO(chlily): Make this compatible with the util/bot environment for CI/CQ.
try:
# Check that `go` is available on the $PATH.
input_api.subprocess.check_call(['go', 'version'],
stdout=input_api.subprocess.PIPE,
stderr=input_api.subprocess.PIPE)
except input_api.subprocess.CalledProcessError as e:
return [
output_api.PresubmitPromptOrNotify(f'Could not run `go`: {e}')
]
pregenerate_script_path = input_api.os_path.join(
input_api.change.RepositoryRoot(), 'util', 'pregenerate')
try:
out, retcode = input_api.subprocess.communicate(
['go', 'run', pregenerate_script_path, '-check'],
stdout=input_api.subprocess.PIPE,
stderr=input_api.subprocess.PIPE)
if retcode:
bad = out[1].decode("utf-8").splitlines()
return [
output_api.PresubmitError(
("Found out-of-date generated files. "
"Run `go run ./util/pregenerate` to update them."), bad)
]
except input_api.subprocess.CalledProcessError as e:
return [output_api.PresubmitError(f'Could not run go script: {e}')]
return [] # Check passed.