5567b88bd10ca324b2d00e303fdb295369d5725d
[platform/upstream/nodejs.git] / tools / gyp / PRESUBMIT.py
1 # Copyright (c) 2012 Google Inc. 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
6 """Top-level presubmit script for GYP.
7
8 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
9 for more details about the presubmit API built into gcl.
10 """
11
12
13 PYLINT_BLACKLIST = [
14     # TODO: fix me.
15     # From SCons, not done in google style.
16     'test/lib/TestCmd.py',
17     'test/lib/TestCommon.py',
18     'test/lib/TestGyp.py',
19     # Needs style fix.
20     'pylib/gyp/generator/xcode.py',
21 ]
22
23
24 PYLINT_DISABLED_WARNINGS = [
25     # TODO: fix me.
26     # Many tests include modules they don't use.
27     'W0611',
28     # Include order doesn't properly include local files?
29     'F0401',
30     # Some use of built-in names.
31     'W0622',
32     # Some unused variables.
33     'W0612',
34     # Operator not preceded/followed by space.
35     'C0323',
36     'C0322',
37     # Unnecessary semicolon.
38     'W0301',
39     # Unused argument.
40     'W0613',
41     # String has no effect (docstring in wrong place).
42     'W0105',
43     # Comma not followed by space.
44     'C0324',
45     # Access to a protected member.
46     'W0212',
47     # Bad indent.
48     'W0311',
49     # Line too long.
50     'C0301',
51     # Undefined variable.
52     'E0602',
53     # Not exception type specified.
54     'W0702',
55     # No member of that name.
56     'E1101',
57     # Dangerous default {}.
58     'W0102',
59     # Others, too many to sort.
60     'W0201', 'W0232', 'E1103', 'W0621', 'W0108', 'W0223', 'W0231',
61     'R0201', 'E0101', 'C0321',
62     # ************* Module copy
63     # W0104:427,12:_test.odict.__setitem__: Statement seems to have no effect
64     'W0104',
65 ]
66
67
68 def CheckChangeOnUpload(input_api, output_api):
69   report = []
70   report.extend(input_api.canned_checks.PanProjectChecks(
71       input_api, output_api))
72   return report
73
74
75 def CheckChangeOnCommit(input_api, output_api):
76   report = []
77
78   # Accept any year number from 2009 to the current year.
79   current_year = int(input_api.time.strftime('%Y'))
80   allowed_years = (str(s) for s in reversed(xrange(2009, current_year + 1)))
81   years_re = '(' + '|'.join(allowed_years) + ')'
82
83   # The (c) is deprecated, but tolerate it until it's removed from all files.
84   license = (
85       r'.*? Copyright (\(c\) )?%(year)s Google Inc\. All rights reserved\.\n'
86       r'.*? Use of this source code is governed by a BSD-style license that '
87         r'can be\n'
88       r'.*? found in the LICENSE file\.\n'
89   ) % {
90       'year': years_re,
91   }
92
93   report.extend(input_api.canned_checks.PanProjectChecks(
94       input_api, output_api, license_header=license))
95   report.extend(input_api.canned_checks.CheckTreeIsOpen(
96       input_api, output_api,
97       'http://gyp-status.appspot.com/status',
98       'http://gyp-status.appspot.com/current'))
99
100   import sys
101   old_sys_path = sys.path
102   try:
103     sys.path = ['pylib', 'test/lib'] + sys.path
104     report.extend(input_api.canned_checks.RunPylint(
105         input_api,
106         output_api,
107         black_list=PYLINT_BLACKLIST,
108         disabled_warnings=PYLINT_DISABLED_WARNINGS))
109   finally:
110     sys.path = old_sys_path
111   return report
112
113
114 def GetPreferredTrySlaves():
115   return ['gyp-win32', 'gyp-win64', 'gyp-linux', 'gyp-mac', 'gyp-android']