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