 Chromium Code Reviews
 Chromium Code Reviews Issue 1384453004:
  Resolve TODOs in PRESUBMIT.py  (Closed) 
  Base URL: https://skia.googlesource.com/skia@master
    
  
    Issue 1384453004:
  Resolve TODOs in PRESUBMIT.py  (Closed) 
  Base URL: https://skia.googlesource.com/skia@master| OLD | NEW | 
|---|---|
| 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 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 237 authors_content = '' | 237 authors_content = '' | 
| 238 for line in open(AUTHORS_FILE_NAME): | 238 for line in open(AUTHORS_FILE_NAME): | 
| 239 if not line.startswith('#'): | 239 if not line.startswith('#'): | 
| 240 authors_content += line | 240 authors_content += line | 
| 241 email_fnmatches = re.findall('<(.*)>', authors_content) | 241 email_fnmatches = re.findall('<(.*)>', authors_content) | 
| 242 for email_fnmatch in email_fnmatches: | 242 for email_fnmatch in email_fnmatches: | 
| 243 if fnmatch.fnmatch(owner_email, email_fnmatch): | 243 if fnmatch.fnmatch(owner_email, email_fnmatch): | 
| 244 # Found a match, the user is in the AUTHORS file break out of the loop | 244 # Found a match, the user is in the AUTHORS file break out of the loop | 
| 245 break | 245 break | 
| 246 else: | 246 else: | 
| 247 # TODO(rmistry): Remove the below CLA messaging once a CLA checker has | |
| 248 # been added to the CQ. | |
| 
rmistry
2015/10/01 15:01:38
The CQ now fails if CLA has not been signed.
 | |
| 249 results.append( | 247 results.append( | 
| 250 output_api.PresubmitError( | 248 output_api.PresubmitError( | 
| 251 'The email %s is not in Skia\'s AUTHORS file.\n' | 249 'The email %s is not in Skia\'s AUTHORS file.\n' | 
| 252 'Issue owner, this CL must include an addition to the Skia AUTHORS ' | 250 'Issue owner, this CL must include an addition to the Skia AUTHORS ' | 
| 253 'file.\n' | 251 'file.' | 
| 254 'Googler reviewers, please check that the AUTHORS entry ' | |
| 255 'corresponds to an email address in http://goto/cla-signers. If it ' | |
| 256 'does not then ask the issue owner to sign the CLA at ' | |
| 257 'https://developers.google.com/open-source/cla/individual ' | |
| 258 '(individual) or ' | |
| 259 'https://developers.google.com/open-source/cla/corporate ' | |
| 260 '(corporate).' | |
| 261 % owner_email)) | 252 % owner_email)) | 
| 262 except IOError: | 253 except IOError: | 
| 263 # Do not fail if authors file cannot be found. | 254 # Do not fail if authors file cannot be found. | 
| 264 traceback.print_exc() | 255 traceback.print_exc() | 
| 265 input_api.logging.error('AUTHORS file not found!') | 256 input_api.logging.error('AUTHORS file not found!') | 
| 266 | 257 | 
| 267 return results | 258 return results | 
| 268 | 259 | 
| 269 | 260 | 
| 270 def _CheckLGTMsForPublicAPI(input_api, output_api): | 261 def _CheckLGTMsForPublicAPI(input_api, output_api): | 
| (...skipping 19 matching lines...) Expand all Loading... | |
| 290 | 281 | 
| 291 lgtm_from_owner = False | 282 lgtm_from_owner = False | 
| 292 issue = input_api.change.issue | 283 issue = input_api.change.issue | 
| 293 if issue and input_api.rietveld: | 284 if issue and input_api.rietveld: | 
| 294 issue_properties = input_api.rietveld.get_issue_properties( | 285 issue_properties = input_api.rietveld.get_issue_properties( | 
| 295 issue=int(issue), messages=True) | 286 issue=int(issue), messages=True) | 
| 296 if re.match(REVERT_CL_SUBJECT_PREFIX, issue_properties['subject'], re.I): | 287 if re.match(REVERT_CL_SUBJECT_PREFIX, issue_properties['subject'], re.I): | 
| 297 # It is a revert CL, ignore the public api owners check. | 288 # It is a revert CL, ignore the public api owners check. | 
| 298 return results | 289 return results | 
| 299 | 290 | 
| 300 # TODO(rmistry): Stop checking for COMMIT=false once crbug/470609 is | 291 if issue_properties['cq_dry_run']: | 
| 301 # resolved. | |
| 
rmistry
2015/10/01 15:01:38
I resolved this bug.
 | |
| 302 if issue_properties['cq_dry_run'] or re.search( | |
| 303 r'^COMMIT=false$', issue_properties['description'], re.M): | |
| 304 # Ignore public api owners check for dry run CLs since they are not | 292 # Ignore public api owners check for dry run CLs since they are not | 
| 305 # going to be committed. | 293 # going to be committed. | 
| 306 return results | 294 return results | 
| 307 | 295 | 
| 308 match = re.search(r'^TBR=(.*)$', issue_properties['description'], re.M) | 296 match = re.search(r'^TBR=(.*)$', issue_properties['description'], re.M) | 
| 309 if match: | 297 if match: | 
| 310 tbr_entries = match.group(1).strip().split(',') | 298 tbr_entries = match.group(1).strip().split(',') | 
| 311 for owner in PUBLIC_API_OWNERS: | 299 for owner in PUBLIC_API_OWNERS: | 
| 312 if owner in tbr_entries or owner.split('@')[0] in tbr_entries: | 300 if owner in tbr_entries or owner.split('@')[0] in tbr_entries: | 
| 313 # If an owner is specified in the TBR= line then ignore the public | 301 # If an owner is specified in the TBR= line then ignore the public | 
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 491 state and an error if it is in 'Closed' state. | 479 state and an error if it is in 'Closed' state. | 
| 492 """ | 480 """ | 
| 493 results = [] | 481 results = [] | 
| 494 results.extend(_CommonChecks(input_api, output_api)) | 482 results.extend(_CommonChecks(input_api, output_api)) | 
| 495 results.extend( | 483 results.extend( | 
| 496 _CheckTreeStatus(input_api, output_api, json_url=( | 484 _CheckTreeStatus(input_api, output_api, json_url=( | 
| 497 SKIA_TREE_STATUS_URL + '/banner-status?format=json'))) | 485 SKIA_TREE_STATUS_URL + '/banner-status?format=json'))) | 
| 498 results.extend(_CheckLGTMsForPublicAPI(input_api, output_api)) | 486 results.extend(_CheckLGTMsForPublicAPI(input_api, output_api)) | 
| 499 results.extend(_CheckOwnerIsInAuthorsFile(input_api, output_api)) | 487 results.extend(_CheckOwnerIsInAuthorsFile(input_api, output_api)) | 
| 500 return results | 488 return results | 
| OLD | NEW |