Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: PRESUBMIT.py

Issue 1003363005: Add presubmit check for copyright notice (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Skip third_party Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 5
6 """Top-level presubmit script for Skia. 6 """Top-level presubmit script for Skia.
7 7
8 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts 8 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
9 for more details about the presubmit API built into gcl. 9 for more details about the presubmit API built into gcl.
10 """ 10 """
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 results = [] 111 results = []
112 if failing_files: 112 if failing_files:
113 results.append( 113 results.append(
114 output_api.PresubmitError( 114 output_api.PresubmitError(
115 'The following files have #if or #ifdef before includes:\n%s\n\n' 115 'The following files have #if or #ifdef before includes:\n%s\n\n'
116 'See skbug.com/3362 for why this should be fixed.' % 116 'See skbug.com/3362 for why this should be fixed.' %
117 '\n'.join(failing_files))) 117 '\n'.join(failing_files)))
118 return results 118 return results
119 119
120 120
121 def _CopyrightChecks(input_api, output_api, source_file_filter=None):
122 results = []
123 year_pattern = r'\d{4}'
124 year_range_pattern = r'%s(-%s)?' % (year_pattern, year_pattern)
125 years_pattern = r'%s(,%s)*,?' % (year_range_pattern, year_range_pattern)
126 copyright_pattern = (
127 r'Copyright (\([cC]\) )?%s \w+' % years_pattern)
128
129 for affected_file in input_api.AffectedSourceFiles(source_file_filter):
130 if 'third_party' in affected_file.LocalPath():
131 continue
132 contents = input_api.ReadFile(affected_file, 'rb')
133 if not re.search(copyright_pattern, contents):
134 results.append(output_api.PresubmitError(
135 '%s is missing a correct copyright header.' % affected_file))
136 return results
137
138
121 def _CommonChecks(input_api, output_api): 139 def _CommonChecks(input_api, output_api):
122 """Presubmit checks common to upload and commit.""" 140 """Presubmit checks common to upload and commit."""
123 results = [] 141 results = []
124 sources = lambda x: (x.LocalPath().endswith('.h') or 142 sources = lambda x: (x.LocalPath().endswith('.h') or
125 x.LocalPath().endswith('.gypi') or 143 x.LocalPath().endswith('.gypi') or
126 x.LocalPath().endswith('.gyp') or 144 x.LocalPath().endswith('.gyp') or
127 x.LocalPath().endswith('.py') or 145 x.LocalPath().endswith('.py') or
128 x.LocalPath().endswith('.sh') or 146 x.LocalPath().endswith('.sh') or
129 x.LocalPath().endswith('.cpp')) 147 x.LocalPath().endswith('.cpp'))
130 results.extend( 148 results.extend(
131 _CheckChangeHasEol( 149 _CheckChangeHasEol(
132 input_api, output_api, source_file_filter=sources)) 150 input_api, output_api, source_file_filter=sources))
133 results.extend(_PythonChecks(input_api, output_api)) 151 results.extend(_PythonChecks(input_api, output_api))
134 results.extend(_IfDefChecks(input_api, output_api)) 152 results.extend(_IfDefChecks(input_api, output_api))
153 results.extend(_CopyrightChecks(input_api, output_api,
154 source_file_filter=sources))
135 return results 155 return results
136 156
137 157
138 def CheckChangeOnUpload(input_api, output_api): 158 def CheckChangeOnUpload(input_api, output_api):
139 """Presubmit checks for the change on upload. 159 """Presubmit checks for the change on upload.
140 160
141 The following are the presubmit checks: 161 The following are the presubmit checks:
142 * Check change has one and only one EOL. 162 * Check change has one and only one EOL.
143 """ 163 """
144 results = [] 164 results = []
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 state and an error if it is in 'Closed' state. 400 state and an error if it is in 'Closed' state.
381 """ 401 """
382 results = [] 402 results = []
383 results.extend(_CommonChecks(input_api, output_api)) 403 results.extend(_CommonChecks(input_api, output_api))
384 results.extend( 404 results.extend(
385 _CheckTreeStatus(input_api, output_api, json_url=( 405 _CheckTreeStatus(input_api, output_api, json_url=(
386 SKIA_TREE_STATUS_URL + '/banner-status?format=json'))) 406 SKIA_TREE_STATUS_URL + '/banner-status?format=json')))
387 results.extend(_CheckLGTMsForPublicAPI(input_api, output_api)) 407 results.extend(_CheckLGTMsForPublicAPI(input_api, output_api))
388 results.extend(_CheckOwnerIsInAuthorsFile(input_api, output_api)) 408 results.extend(_CheckOwnerIsInAuthorsFile(input_api, output_api))
389 return results 409 return results
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698