1# Copyright 2019 The Chromium Authors 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import re 6"""Presubmit for build/util""" 7 8 9 10 11def _GetFilesToSkip(input_api): 12 files_to_skip = [] 13 affected_files = input_api.change.AffectedFiles() 14 version_script_change = next( 15 (f for f in affected_files 16 if re.search('\\/version\\.py$|\\/version_test\\.py$', f.LocalPath())), 17 None) 18 19 if version_script_change is None: 20 files_to_skip.append('version_test\\.py$') 21 22 android_chrome_version_script_change = next( 23 (f for f in affected_files if re.search( 24 '\\/android_chrome_version\\.py$|' 25 '\\/android_chrome_version_test\\.py$', f.LocalPath())), None) 26 27 if android_chrome_version_script_change is None: 28 files_to_skip.append('android_chrome_version_test\\.py$') 29 30 return files_to_skip 31 32 33def _GetPythonUnitTests(input_api, output_api): 34 # No need to test if files are unchanged 35 files_to_skip = _GetFilesToSkip(input_api) 36 37 return input_api.canned_checks.GetUnitTestsRecursively( 38 input_api, 39 output_api, 40 input_api.PresubmitLocalPath(), 41 files_to_check=['.*_test\\.py$'], 42 files_to_skip=files_to_skip) 43 44 45def CommonChecks(input_api, output_api): 46 """Presubmit checks run on both upload and commit. 47 """ 48 checks = [] 49 checks.extend(_GetPythonUnitTests(input_api, output_api)) 50 return input_api.RunTests(checks, False) 51 52 53def CheckChangeOnUpload(input_api, output_api): 54 """Presubmit checks on CL upload.""" 55 return CommonChecks(input_api, output_api) 56 57 58def CheckChangeOnCommit(input_api, output_api): 59 """Presubmit checks on commit.""" 60 return CommonChecks(input_api, output_api) 61