blob: d79c1a7d7187743158f883c7d8c695d551d51697 [file] [log] [blame]
maruel@chromium.org3d235242009-05-15 12:40:48 +00001# Copyright (c) 2009 The Chromium Authors. All rights reserved.
2# 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',
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000016 'tests.presubmit_unittest',
maruel@chromium.orgd5800f12009-11-12 20:03:43 +000017 'tests.scm_unittest',
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000018 'tests.trychange_unittest',
nirnimesh@chromium.orgb82e4092009-06-18 14:24:08 +000019 'tests.watchlists_unittest',
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000020]
maruel@chromium.org3d235242009-05-15 12:40:48 +000021
22def CheckChangeOnUpload(input_api, output_api):
maruel@chromium.org7b305e82009-05-19 18:24:20 +000023 output = []
24 output.extend(input_api.canned_checks.RunPythonUnitTests(input_api,
25 output_api,
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000026 UNIT_TESTS))
maruel@chromium.orgbbfc80f2010-06-22 17:55:15 +000027 output.extend(WasGitClUploadHookModified(input_api, output_api))
maruel@chromium.orgfa410372010-09-10 17:01:01 +000028 output.extend(RunPylint(input_api, output_api))
maruel@chromium.orgce30ef72009-05-25 15:20:42 +000029 return output
30
31
32def CheckChangeOnCommit(input_api, output_api):
33 output = []
34 output.extend(input_api.canned_checks.RunPythonUnitTests(input_api,
35 output_api,
36 UNIT_TESTS))
maruel@chromium.org7b305e82009-05-19 18:24:20 +000037 output.extend(input_api.canned_checks.CheckDoNotSubmit(input_api,
38 output_api))
maruel@chromium.orgbbfc80f2010-06-22 17:55:15 +000039 output.extend(WasGitClUploadHookModified(input_api, output_api))
maruel@chromium.orgfa410372010-09-10 17:01:01 +000040 output.extend(RunPylint(input_api, output_api))
maruel@chromium.org7b305e82009-05-19 18:24:20 +000041 return output
maruel@chromium.orgbbfc80f2010-06-22 17:55:15 +000042
43def WasGitClUploadHookModified(input_api, output_api):
44 for affected_file in input_api.AffectedSourceFiles(None):
45 if (input_api.os_path.basename(affected_file.LocalPath()) ==
46 'git-cl-upload-hook'):
47 return [output_api.PresubmitPromptWarning(
48 'Don\'t forget to fix git-cl to download the newest version of '
49 'git-cl-upload-hook')]
50 return []
maruel@chromium.orgfa410372010-09-10 17:01:01 +000051
52def RunPylint(input_api, output_api):
53 import glob
54 files = glob.glob('*.py')
55 # It's a python script
56 files.append('git-try')
57 # It uses non-standard pylint exceptions that makes pylint always fail.
58 files.remove('cpplint.py')
59 proc = input_api.subprocess.Popen(['pylint', '-E'] + files)
60 proc.communicate()
61 if proc.returncode:
62 return [output_api.PresubmitError('Fix pylint errors first.')]
63 return []