You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					140 lines
				
				3.7 KiB
			
		
		
			
		
	
	
					140 lines
				
				3.7 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								# Copyright (c) 2012 Google Inc. All rights reserved.
							 | 
						||
| 
								 | 
							
								# Use of this source code is governed by a BSD-style license that can be
							 | 
						||
| 
								 | 
							
								# found in the LICENSE file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"""Top-level presubmit script for GYP.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
							 | 
						||
| 
								 | 
							
								for more details about the presubmit API built into gcl.
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PYLINT_BLACKLIST = [
							 | 
						||
| 
								 | 
							
								    # TODO: fix me.
							 | 
						||
| 
								 | 
							
								    # From SCons, not done in google style.
							 | 
						||
| 
								 | 
							
								    'test/lib/TestCmd.py',
							 | 
						||
| 
								 | 
							
								    'test/lib/TestCommon.py',
							 | 
						||
| 
								 | 
							
								    'test/lib/TestGyp.py',
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PYLINT_DISABLED_WARNINGS = [
							 | 
						||
| 
								 | 
							
								    # TODO: fix me.
							 | 
						||
| 
								 | 
							
								    # Many tests include modules they don't use.
							 | 
						||
| 
								 | 
							
								    'W0611',
							 | 
						||
| 
								 | 
							
								    # Possible unbalanced tuple unpacking with sequence.
							 | 
						||
| 
								 | 
							
								    'W0632',
							 | 
						||
| 
								 | 
							
								    # Attempting to unpack a non-sequence.
							 | 
						||
| 
								 | 
							
								    'W0633',
							 | 
						||
| 
								 | 
							
								    # Include order doesn't properly include local files?
							 | 
						||
| 
								 | 
							
								    'F0401',
							 | 
						||
| 
								 | 
							
								    # Some use of built-in names.
							 | 
						||
| 
								 | 
							
								    'W0622',
							 | 
						||
| 
								 | 
							
								    # Some unused variables.
							 | 
						||
| 
								 | 
							
								    'W0612',
							 | 
						||
| 
								 | 
							
								    # Operator not preceded/followed by space.
							 | 
						||
| 
								 | 
							
								    'C0323',
							 | 
						||
| 
								 | 
							
								    'C0322',
							 | 
						||
| 
								 | 
							
								    # Unnecessary semicolon.
							 | 
						||
| 
								 | 
							
								    'W0301',
							 | 
						||
| 
								 | 
							
								    # Unused argument.
							 | 
						||
| 
								 | 
							
								    'W0613',
							 | 
						||
| 
								 | 
							
								    # String has no effect (docstring in wrong place).
							 | 
						||
| 
								 | 
							
								    'W0105',
							 | 
						||
| 
								 | 
							
								    # map/filter on lambda could be replaced by comprehension.
							 | 
						||
| 
								 | 
							
								    'W0110',
							 | 
						||
| 
								 | 
							
								    # Use of eval.
							 | 
						||
| 
								 | 
							
								    'W0123',
							 | 
						||
| 
								 | 
							
								    # Comma not followed by space.
							 | 
						||
| 
								 | 
							
								    'C0324',
							 | 
						||
| 
								 | 
							
								    # Access to a protected member.
							 | 
						||
| 
								 | 
							
								    'W0212',
							 | 
						||
| 
								 | 
							
								    # Bad indent.
							 | 
						||
| 
								 | 
							
								    'W0311',
							 | 
						||
| 
								 | 
							
								    # Line too long.
							 | 
						||
| 
								 | 
							
								    'C0301',
							 | 
						||
| 
								 | 
							
								    # Undefined variable.
							 | 
						||
| 
								 | 
							
								    'E0602',
							 | 
						||
| 
								 | 
							
								    # Not exception type specified.
							 | 
						||
| 
								 | 
							
								    'W0702',
							 | 
						||
| 
								 | 
							
								    # No member of that name.
							 | 
						||
| 
								 | 
							
								    'E1101',
							 | 
						||
| 
								 | 
							
								    # Dangerous default {}.
							 | 
						||
| 
								 | 
							
								    'W0102',
							 | 
						||
| 
								 | 
							
								    # Cyclic import.
							 | 
						||
| 
								 | 
							
								    'R0401',
							 | 
						||
| 
								 | 
							
								    # Others, too many to sort.
							 | 
						||
| 
								 | 
							
								    'W0201', 'W0232', 'E1103', 'W0621', 'W0108', 'W0223', 'W0231',
							 | 
						||
| 
								 | 
							
								    'R0201', 'E0101', 'C0321',
							 | 
						||
| 
								 | 
							
								    # ************* Module copy
							 | 
						||
| 
								 | 
							
								    # W0104:427,12:_test.odict.__setitem__: Statement seems to have no effect
							 | 
						||
| 
								 | 
							
								    'W0104',
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def _LicenseHeader(input_api):
							 | 
						||
| 
								 | 
							
								  # Accept any year number from 2009 to the current year.
							 | 
						||
| 
								 | 
							
								  current_year = int(input_api.time.strftime('%Y'))
							 | 
						||
| 
								 | 
							
								  allowed_years = (str(s) for s in reversed(xrange(2009, current_year + 1)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  years_re = '(' + '|'.join(allowed_years) + ')'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # The (c) is deprecated, but tolerate it until it's removed from all files.
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								      r'.*? Copyright (\(c\) )?%(year)s Google Inc\. All rights reserved\.\n'
							 | 
						||
| 
								 | 
							
								      r'.*? Use of this source code is governed by a BSD-style license that '
							 | 
						||
| 
								 | 
							
								        r'can be\n'
							 | 
						||
| 
								 | 
							
								      r'.*? found in the LICENSE file\.\n'
							 | 
						||
| 
								 | 
							
								  ) % {
							 | 
						||
| 
								 | 
							
								      'year': years_re,
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def CheckChangeOnUpload(input_api, output_api):
							 | 
						||
| 
								 | 
							
								  report = []
							 | 
						||
| 
								 | 
							
								  report.extend(input_api.canned_checks.PanProjectChecks(
							 | 
						||
| 
								 | 
							
								      input_api, output_api, license_header=_LicenseHeader(input_api)))
							 | 
						||
| 
								 | 
							
								  return report
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def CheckChangeOnCommit(input_api, output_api):
							 | 
						||
| 
								 | 
							
								  report = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  report.extend(input_api.canned_checks.PanProjectChecks(
							 | 
						||
| 
								 | 
							
								      input_api, output_api, license_header=_LicenseHeader(input_api)))
							 | 
						||
| 
								 | 
							
								  report.extend(input_api.canned_checks.CheckTreeIsOpen(
							 | 
						||
| 
								 | 
							
								      input_api, output_api,
							 | 
						||
| 
								 | 
							
								      'http://gyp-status.appspot.com/status',
							 | 
						||
| 
								 | 
							
								      'http://gyp-status.appspot.com/current'))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  import os
							 | 
						||
| 
								 | 
							
								  import sys
							 | 
						||
| 
								 | 
							
								  old_sys_path = sys.path
							 | 
						||
| 
								 | 
							
								  try:
							 | 
						||
| 
								 | 
							
								    sys.path = ['pylib', 'test/lib'] + sys.path
							 | 
						||
| 
								 | 
							
								    blacklist = PYLINT_BLACKLIST
							 | 
						||
| 
								 | 
							
								    if sys.platform == 'win32':
							 | 
						||
| 
								 | 
							
								      blacklist = [os.path.normpath(x).replace('\\', '\\\\')
							 | 
						||
| 
								 | 
							
								                   for x in PYLINT_BLACKLIST]
							 | 
						||
| 
								 | 
							
								    report.extend(input_api.canned_checks.RunPylint(
							 | 
						||
| 
								 | 
							
								        input_api,
							 | 
						||
| 
								 | 
							
								        output_api,
							 | 
						||
| 
								 | 
							
								        black_list=blacklist,
							 | 
						||
| 
								 | 
							
								        disabled_warnings=PYLINT_DISABLED_WARNINGS))
							 | 
						||
| 
								 | 
							
								  finally:
							 | 
						||
| 
								 | 
							
								    sys.path = old_sys_path
							 | 
						||
| 
								 | 
							
								  return report
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								TRYBOTS = [
							 | 
						||
| 
								 | 
							
								    'linux_try',
							 | 
						||
| 
								 | 
							
								    'mac_try',
							 | 
						||
| 
								 | 
							
								    'win_try',
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def GetPreferredTryMasters(_, change):
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								      'client.gyp': { t: set(['defaulttests']) for t in TRYBOTS },
							 | 
						||
| 
								 | 
							
								  }
							 |