xref: /aosp_15_r20/external/angle/build/util/PRESUBMIT.py (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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