| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import re |
| """Presubmit for build/util""" |
| |
| |
| USE_PYTHON3 = True |
| |
| |
| def _GetFilesToSkip(input_api): |
| files_to_skip = [] |
| affected_files = input_api.change.AffectedFiles() |
| version_script_change = next( |
| (f for f in affected_files |
| if re.search('\\/version\\.py$|\\/version_test\\.py$', f.LocalPath())), |
| None) |
| |
| if version_script_change is None: |
| files_to_skip.append('version_test\\.py$') |
| |
| android_chrome_version_script_change = next( |
| (f for f in affected_files if re.search( |
| '\\/android_chrome_version\\.py$|' |
| '\\/android_chrome_version_test\\.py$', f.LocalPath())), None) |
| |
| if android_chrome_version_script_change is None: |
| files_to_skip.append('android_chrome_version_test\\.py$') |
| |
| return files_to_skip |
| |
| |
| def _GetPythonUnitTests(input_api, output_api): |
| # No need to test if files are unchanged |
| files_to_skip = _GetFilesToSkip(input_api) |
| |
| return input_api.canned_checks.GetUnitTestsRecursively( |
| input_api, |
| output_api, |
| input_api.PresubmitLocalPath(), |
| files_to_check=['.*_test\\.py$'], |
| files_to_skip=files_to_skip, |
| run_on_python2=False, |
| run_on_python3=True, |
| skip_shebang_check=True) |
| |
| |
| def CommonChecks(input_api, output_api): |
| """Presubmit checks run on both upload and commit. |
| """ |
| checks = [] |
| checks.extend(_GetPythonUnitTests(input_api, output_api)) |
| return input_api.RunTests(checks, False) |
| |
| |
| def CheckChangeOnUpload(input_api, output_api): |
| """Presubmit checks on CL upload.""" |
| return CommonChecks(input_api, output_api) |
| |
| |
| def CheckChangeOnCommit(input_api, output_api): |
| """Presubmit checks on commit.""" |
| return CommonChecks(input_api, output_api) |