blob: 4bbd68c9dc52d36fc79c51ca19029a90e7053026 [file] [log] [blame]
# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Presubmit for //third_party/rust/chromium_crates_io
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'
def CheckGnrtConfig(input_api, output_api):
# First check if the CL touches any files used as inputs by
# `third_party/rust/chromium_crates_io/run_presubmits.py`.
CARGO_LOCK_PATH = "third_party/rust/chromium_crates_io/Cargo.lock"
CARGO_TOML_PATH = "third_party/rust/chromium_crates_io/Cargo.toml"
GNRT_CONFIG_PATH = "third_party/rust/chromium_crates_io/gnrt_config.toml"
toml_inputs = set([CARGO_LOCK_PATH, CARGO_TOML_PATH, GNRT_CONFIG_PATH])
affected_paths = set(
map(lambda f: f.UnixLocalPath(), input_api.change.AffectedFiles()))
any_patches_affected = filter(lambda p: "chromium_crates_io/patches" in p,
affected_paths)
any_toml_inputs_affected = toml_inputs.intersection(affected_paths)
if not (any_patches_affected or any_toml_inputs_affected):
# Exit early if no input files are affected by the current CL.
return []
# Delegate actual checks to `check_gnrt_config.py` (one reason is that we
# can't apparently `import toml` in `PRESUBMIT.py`).
test_script_path = input_api.os_path.join(input_api.PresubmitLocalPath(),
"run_presubmits.py")
cmd_name = '//third_party/rust/chromium_crates_io/run_presubmits.py'
test_cmd = input_api.Command(
name=cmd_name,
cmd=[input_api.python_executable, test_script_path],
kwargs={},
message=output_api.PresubmitError)
if input_api.verbose:
print('Running ' + cmd_name)
return input_api.RunTests([test_cmd])
def CheckPythonUnittestsPass(input_api, output_api):
results = []
this_dir = input_api.PresubmitLocalPath()
results += input_api.RunTests(
input_api.canned_checks.GetUnitTestsInDirectory(
input_api,
output_api,
this_dir,
files_to_check=['.*unittest.*\.py$'],
env=None))
return results