blob: 26b66942ba7ba8b500ce28676aaceeaa88bd30b8 [file] [log] [blame]
qyearsley61be68b2015-07-06 12:57:02 -07001# Copyright 2015 The Chromium Authors. All rights reserved.
sullivan3283c9a2015-05-28 12:41:09 -07002# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Top-level presubmit script for catapult.
6
7See https://www.chromium.org/developers/how-tos/depottools/presubmit-scripts
8for more details about the presubmit API built into depot_tools.
9"""
sullivan497af692015-08-11 10:39:21 -070010import re
Petr Cermak3946db22015-05-22 15:35:39 +010011import sys
sullivan3283c9a2015-05-28 12:41:09 -070012
sullivan7bb77ca2015-08-07 10:44:03 -070013_EXCLUDED_PATHS = (
dtua9d94bc2015-09-15 13:54:19 -070014 r'(.*[\\/])?\.git[\\/].*',
sullivan7bb77ca2015-08-07 10:44:03 -070015 r'.+\.png$',
16 r'.+\.svg$',
17 r'.+\.skp$',
18 r'.+\.gypi$',
19 r'.+\.gyp$',
20 r'.+\.gn$',
21 r'.*\.gitignore$',
22 r'.*codereview.settings$',
23 r'.*AUTHOR$',
24 r'^CONTRIBUTORS\.md$',
25 r'.*LICENSE$',
26 r'.*OWNERS$',
27 r'.*README\.md$',
dtua9d94bc2015-09-15 13:54:19 -070028 r'^dashboard[\\/]dashboard[\\/]templates[\\/].*',
29 r'^experimental[\\/]heatmap[\\/].*',
30 r'^perf_insights[\\/]test_data[\\/].*',
31 r'^perf_insights[\\/]third_party[\\/].*',
32 r'^third_party[\\/].*',
33 r'^tracing[\\/]\.allow-devtools-save$',
34 r'^tracing[\\/]bower\.json$',
35 r'^tracing[\\/]\.bowerrc$',
36 r'^tracing[\\/]tracing_examples[\\/]string_convert\.js$',
37 r'^tracing[\\/]test_data[\\/].*',
38 r'^tracing[\\/]third_party[\\/].*',
qyearsley806cebd2016-02-08 14:13:44 -080039 r'^telemetry[\\/]support[\\/]html_output[\\/]results-template.html',
sullivan7bb77ca2015-08-07 10:44:03 -070040)
41
sullivan3283c9a2015-05-28 12:41:09 -070042
dtub38aea62016-01-22 09:10:59 -080043def GetPreferredTryMasters(project, change):
sullivan3283c9a2015-05-28 12:41:09 -070044 return {
qyearsleyd00b6d12015-07-06 12:13:38 -070045 'tryserver.client.catapult': {
46 'Catapult Linux Tryserver': {'defaulttests'},
47 'Catapult Mac Tryserver': {'defaulttests'},
48 'Catapult Windows Tryserver': {'defaulttests'},
49 }
sullivanc11564b2015-06-25 10:37:29 -070050 }
51
52
sullivan497af692015-08-11 10:39:21 -070053def CheckChangeLogBug(input_api, output_api):
sullivan8ef80f52015-08-12 10:26:57 -070054 if input_api.change.BUG is None or re.match(
eakuefnera9075e1e2016-02-11 11:16:02 -080055 r'((chromium\:|catapult\:\#)\d+)(,\s*(chromium\:|catapult\:\#)\d+)*$',
56 input_api.change.BUG):
sullivan497af692015-08-11 10:39:21 -070057 return []
sullivan8ef80f52015-08-12 10:26:57 -070058 return [output_api.PresubmitError(
eakuefnera9075e1e2016-02-11 11:16:02 -080059 ('Invalid bug "%s". Chromium issues should be prefixed with "chromium:" '
60 'and Catapult issues should be prefixed with "catapult:#".' %
61 input_api.change.BUG))]
sullivan497af692015-08-11 10:39:21 -070062
63
Petr Cermak3946db22015-05-22 15:35:39 +010064def CheckChange(input_api, output_api):
sullivan1e388742015-08-03 13:45:35 -070065 results = []
Petr Cermak3946db22015-05-22 15:35:39 +010066 try:
67 sys.path += [input_api.PresubmitLocalPath()]
sullivan04bf4b52015-08-21 13:08:38 -070068 from catapult_build import js_checks
qyearsleybd4fba62015-11-11 12:02:41 -080069 from catapult_build import html_checks
petrcermak6dc7cbf2016-02-24 10:15:03 -080070 from catapult_build import repo_checks
sullivan497af692015-08-11 10:39:21 -070071 results += input_api.canned_checks.PanProjectChecks(
72 input_api, output_api, excluded_paths=_EXCLUDED_PATHS)
sullivan497af692015-08-11 10:39:21 -070073 results += CheckChangeLogBug(input_api, output_api)
qyearsleye080ff92015-08-17 11:19:59 -070074 results += js_checks.RunChecks(
75 input_api, output_api, excluded_paths=_EXCLUDED_PATHS)
qyearsleybd4fba62015-11-11 12:02:41 -080076 results += html_checks.RunChecks(
77 input_api, output_api, excluded_paths=_EXCLUDED_PATHS)
petrcermak6dc7cbf2016-02-24 10:15:03 -080078 results += repo_checks.RunChecks(input_api, output_api)
Petr Cermak3946db22015-05-22 15:35:39 +010079 finally:
nducaa6e18a92015-08-09 17:06:32 -070080 sys.path.remove(input_api.PresubmitLocalPath())
sullivan1e388742015-08-03 13:45:35 -070081 return results
sullivanc11564b2015-06-25 10:37:29 -070082
83
84def CheckChangeOnUpload(input_api, output_api):
Petr Cermak3946db22015-05-22 15:35:39 +010085 return CheckChange(input_api, output_api)
sullivanc11564b2015-06-25 10:37:29 -070086
87
88def CheckChangeOnCommit(input_api, output_api):
Petr Cermak3946db22015-05-22 15:35:39 +010089 return CheckChange(input_api, output_api)