blob: 2661cba8c6fc47236f90405c560db26c5dff3e0a [file] [log] [blame]
chase@chromium.orgb9a98322010-12-23 22:32:45 +00001# Copyright (c) 2010 The Chromium Authors. All rights reserved.
maruel@chromium.org3d235242009-05-15 12:40:48 +00002# 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 depot tools.
6
7See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for
8details on the presubmit API built into gcl.
9"""
10
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000011UNIT_TESTS = [
12 'tests.gcl_unittest',
maruel@chromium.orgad80e3b2010-09-09 14:18:28 +000013 'tests.gclient_scm_test',
maruel@chromium.org888b8352010-08-11 18:42:03 +000014 'tests.gclient_smoketest',
maruel@chromium.orgd5800f12009-11-12 20:03:43 +000015 'tests.gclient_utils_test',
dpranke@chromium.org5fe603e2011-03-09 21:02:50 +000016 'tests.owners_unittest',
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000017 'tests.presubmit_unittest',
maruel@chromium.orgd5800f12009-11-12 20:03:43 +000018 'tests.scm_unittest',
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000019 'tests.trychange_unittest',
nirnimesh@chromium.orgb82e4092009-06-18 14:24:08 +000020 'tests.watchlists_unittest',
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000021]
maruel@chromium.org3d235242009-05-15 12:40:48 +000022
dpranke@chromium.org627ea672011-03-11 23:29:03 +000023
maruel@chromium.orge94aedc2010-12-13 21:11:30 +000024def CommonChecks(input_api, output_api):
maruel@chromium.org7b305e82009-05-19 18:24:20 +000025 output = []
maruel@chromium.org5d0dc432011-01-03 02:40:37 +000026 # Verify that LocalPath() is local, e.g.:
27 # os.path.join(PresubmitLocalPath(), LocalPath()) == AbsoluteLocalPath()
28 for i in input_api.AffectedFiles():
29 if (input_api.os_path.join(input_api.PresubmitLocalPath(), i.LocalPath()) !=
30 i.AbsoluteLocalPath()):
31 output.append(output_api.PresubmitError('Path inconsistency'))
32 # Return right away because it needs to be fixed first.
33 return output
34
dpranke@chromium.org8d840412011-03-17 23:43:45 +000035 output.extend(input_api.canned_checks.CheckOwners(input_api, output_api))
dpranke@chromium.org3ae183f2011-03-09 21:40:32 +000036
maruel@chromium.orge94aedc2010-12-13 21:11:30 +000037 output.extend(input_api.canned_checks.RunPythonUnitTests(
38 input_api,
39 output_api,
40 UNIT_TESTS))
maruel@chromium.orgbbfc80f2010-06-22 17:55:15 +000041 output.extend(WasGitClUploadHookModified(input_api, output_api))
maruel@chromium.orge94aedc2010-12-13 21:11:30 +000042
maruel@chromium.org5d0dc432011-01-03 02:40:37 +000043 white_list = [r'.*\.py$', r'^git-try$']
maruel@chromium.orgbf38a7e2010-12-14 18:15:54 +000044 black_list = list(input_api.DEFAULT_BLACK_LIST) + [
maruel@chromium.org5d0dc432011-01-03 02:40:37 +000045 r'^cpplint\.py$',
46 r'^git_cl[\/\\].*',
47 r'^git_cl_repo[\/\\].*',
48 r'^git_cl[\/\\]test[\/\\]rietveld.*']
maruel@chromium.orge94aedc2010-12-13 21:11:30 +000049 output.extend(input_api.canned_checks.RunPylint(
50 input_api,
51 output_api,
maruel@chromium.orgbf38a7e2010-12-14 18:15:54 +000052 white_list=white_list,
53 black_list=black_list))
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000054 return output
55
56
maruel@chromium.orge94aedc2010-12-13 21:11:30 +000057def CheckChangeOnUpload(input_api, output_api):
58 return CommonChecks(input_api, output_api)
59
60
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000061def CheckChangeOnCommit(input_api, output_api):
62 output = []
maruel@chromium.orge94aedc2010-12-13 21:11:30 +000063 output.extend(CommonChecks(input_api, output_api))
64 output.extend(input_api.canned_checks.CheckDoNotSubmit(
65 input_api,
66 output_api))
maruel@chromium.org7b305e82009-05-19 18:24:20 +000067 return output
maruel@chromium.orgbbfc80f2010-06-22 17:55:15 +000068
maruel@chromium.orge94aedc2010-12-13 21:11:30 +000069
maruel@chromium.orgbbfc80f2010-06-22 17:55:15 +000070def WasGitClUploadHookModified(input_api, output_api):
71 for affected_file in input_api.AffectedSourceFiles(None):
72 if (input_api.os_path.basename(affected_file.LocalPath()) ==
73 'git-cl-upload-hook'):
74 return [output_api.PresubmitPromptWarning(
75 'Don\'t forget to fix git-cl to download the newest version of '
76 'git-cl-upload-hook')]
77 return []