| # Copyright (c) 2021 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. |
| """Presubmit script for infra/services/. |
| |
| See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for |
| details on the presubmit API built into depot_tools. |
| |
| Note: this file is used for py3 tests since we can't use infra's root |
| test.py for python3. |
| """ |
| |
| import os |
| import sys |
| |
| |
| def CommonChecks(input_api, output_api): |
| results = [] |
| tests = [] |
| root_infra_path = os.path.join(input_api.PresubmitLocalPath(), '..', '..') |
| |
| affected_files = [x.LocalPath() for x in input_api.AffectedFiles()] |
| docker_services = ['android_docker', 'cros_docker', 'swarm_docker'] |
| include_docker_service_tests = False |
| for f in affected_files: |
| if any(service in f.split(os.sep) for service in docker_services): |
| include_docker_service_tests = True |
| break |
| |
| if include_docker_service_tests and sys.platform.startswith('linux'): |
| test_env = dict(input_api.environ) |
| test_env.update({ |
| 'PYTHONPATH': root_infra_path, |
| }) |
| for service in docker_services: |
| tests.extend( |
| input_api.canned_checks.GetUnitTestsInDirectory( |
| input_api, |
| output_api, |
| os.path.join(service, 'test'), [r'^.+_test\.py$'], |
| env=test_env)) |
| |
| results += input_api.RunTests(tests) |
| return results |
| |
| |
| def CheckChangeOnUpload(input_api, output_api): |
| return CommonChecks(input_api, output_api) |
| |
| |
| def CheckChangeOnCommit(input_api, output_api): |
| return CommonChecks(input_api, output_api) |