| OLD | NEW | 
|---|
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 """Generic presubmit checks that can be reused by other presubmit checks.""" | 5 """Generic presubmit checks that can be reused by other presubmit checks.""" | 
| 6 | 6 | 
| 7 import os as _os | 7 import os as _os | 
| 8 _HERE = _os.path.dirname(_os.path.abspath(__file__)) | 8 _HERE = _os.path.dirname(_os.path.abspath(__file__)) | 
| 9 | 9 | 
| 10 # Justifications for each filter: | 10 # Justifications for each filter: | 
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 764 | 764 | 
| 765   input_api.logging.info('Running pylint on %d files', len(files)) | 765   input_api.logging.info('Running pylint on %d files', len(files)) | 
| 766   input_api.logging.debug('Running pylint on: %s', files) | 766   input_api.logging.debug('Running pylint on: %s', files) | 
| 767   # Copy the system path to the environment so pylint can find the right | 767   # Copy the system path to the environment so pylint can find the right | 
| 768   # imports. | 768   # imports. | 
| 769   env = input_api.environ.copy() | 769   env = input_api.environ.copy() | 
| 770   import sys | 770   import sys | 
| 771   env['PYTHONPATH'] = input_api.os_path.pathsep.join( | 771   env['PYTHONPATH'] = input_api.os_path.pathsep.join( | 
| 772       extra_paths_list + sys.path).encode('utf8') | 772       extra_paths_list + sys.path).encode('utf8') | 
| 773 | 773 | 
| 774   def GetPylintCmd(files, extra, parallel): | 774   def GetPylintCmd(flist, extra, parallel): | 
| 775     # Windows needs help running python files so we explicitly specify | 775     # Windows needs help running python files so we explicitly specify | 
| 776     # the interpreter to use. It also has limitations on the size of | 776     # the interpreter to use. It also has limitations on the size of | 
| 777     # the command-line, so we pass arguments via a pipe. | 777     # the command-line, so we pass arguments via a pipe. | 
| 778     cmd = [input_api.python_executable, | 778     cmd = [input_api.python_executable, | 
| 779            input_api.os_path.join(_HERE, 'third_party', 'pylint.py'), | 779            input_api.os_path.join(_HERE, 'third_party', 'pylint.py'), | 
| 780            '--args-on-stdin'] | 780            '--args-on-stdin'] | 
| 781     if len(files) == 1: | 781     if len(flist) == 1: | 
| 782       description = files[0] | 782       description = flist[0] | 
| 783     else: | 783     else: | 
| 784       description = '%s files' % len(files) | 784       description = '%s files' % len(flist) | 
| 785 | 785 | 
|  | 786     args = extra_args[:] | 
| 786     if extra: | 787     if extra: | 
| 787       cmd.extend(extra) | 788       args.extend(extra) | 
| 788       description += ' using %s' % (extra,) | 789       description += ' using %s' % (extra,) | 
| 789     if parallel: | 790     if parallel: | 
| 790       cmd.append('--jobs=%s' % input_api.cpu_count) | 791       args.append('--jobs=%s' % input_api.cpu_count) | 
| 791       description += ' on %d cores' % input_api.cpu_count | 792       description += ' on %d cores' % input_api.cpu_count | 
| 792 | 793 | 
| 793     return input_api.Command( | 794     return input_api.Command( | 
| 794         name='Pylint (%s)' % description, | 795         name='Pylint (%s)' % description, | 
| 795         cmd=cmd, | 796         cmd=cmd, | 
| 796         kwargs={'env': env, 'stdin': '\n'.join(files + extra_args)}, | 797         kwargs={'env': env, 'stdin': '\n'.join(args + flist)}, | 
| 797         message=error_type) | 798         message=error_type) | 
| 798 | 799 | 
| 799   # Always run pylint and pass it all the py files at once. | 800   # Always run pylint and pass it all the py files at once. | 
| 800   # Passing py files one at time is slower and can produce | 801   # Passing py files one at time is slower and can produce | 
| 801   # different results.  input_api.verbose used to be used | 802   # different results.  input_api.verbose used to be used | 
| 802   # to enable this behaviour but differing behaviour in | 803   # to enable this behaviour but differing behaviour in | 
| 803   # verbose mode is not desirable. | 804   # verbose mode is not desirable. | 
| 804   # Leave this unreachable code in here so users can make | 805   # Leave this unreachable code in here so users can make | 
| 805   # a quick local edit to diagnose pylint issues more | 806   # a quick local edit to diagnose pylint issues more | 
| 806   # easily. | 807   # easily. | 
| 807   if True: | 808   if True: | 
| 808     # pylint's cycle detection doesn't work in parallel, so spawn a second, | 809     # pylint's cycle detection doesn't work in parallel, so spawn a second, | 
| 809     # single-threaded job for just that check. | 810     # single-threaded job for just that check. | 
| 810     return [ | 811 | 
| 811       GetPylintCmd(files, ["--disable=cyclic-import"], True), | 812     # Some PRESUBMITs explicitly mention cycle detection. | 
| 812       GetPylintCmd(files, ["--disable=all", "--enable=cyclic-import"], False) | 813     if not any('R0401' in a or 'cyclic-import' in a for a in extra_args): | 
| 813     ] | 814       return [ | 
|  | 815         GetPylintCmd(files, ["--disable=cyclic-import"], True), | 
|  | 816         GetPylintCmd(files, ["--disable=all", "--enable=cyclic-import"], False) | 
|  | 817       ] | 
|  | 818     else: | 
|  | 819       return [ GetPylintCmd(files, [], True) ] | 
|  | 820 | 
| 814   else: | 821   else: | 
| 815     return map(lambda x: GetPylintCmd([x], extra_args, 1), files) | 822     return map(lambda x: GetPylintCmd([x], [], 1), files) | 
| 816 | 823 | 
| 817 | 824 | 
| 818 def RunPylint(input_api, *args, **kwargs): | 825 def RunPylint(input_api, *args, **kwargs): | 
| 819   """Legacy presubmit function. | 826   """Legacy presubmit function. | 
| 820 | 827 | 
| 821   For better performance, get all tests and then pass to | 828   For better performance, get all tests and then pass to | 
| 822   input_api.RunTests. | 829   input_api.RunTests. | 
| 823   """ | 830   """ | 
| 824   return input_api.RunTests(GetPylint(input_api, *args, **kwargs), False) | 831   return input_api.RunTests(GetPylint(input_api, *args, **kwargs), False) | 
| 825 | 832 | 
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1142   for f in affected_files: | 1149   for f in affected_files: | 
| 1143     cmd = ['gn', 'format', '--dry-run', f.AbsoluteLocalPath()] | 1150     cmd = ['gn', 'format', '--dry-run', f.AbsoluteLocalPath()] | 
| 1144     rc = gn.main(cmd) | 1151     rc = gn.main(cmd) | 
| 1145     if rc == 2: | 1152     if rc == 2: | 
| 1146       warnings.append(output_api.PresubmitPromptWarning( | 1153       warnings.append(output_api.PresubmitPromptWarning( | 
| 1147           '%s requires formatting. Please run `gn format --in-place %s`.' % ( | 1154           '%s requires formatting. Please run `gn format --in-place %s`.' % ( | 
| 1148               f.AbsoluteLocalPath(), f.LocalPath()))) | 1155               f.AbsoluteLocalPath(), f.LocalPath()))) | 
| 1149   # It's just a warning, so ignore other types of failures assuming they'll be | 1156   # It's just a warning, so ignore other types of failures assuming they'll be | 
| 1150   # caught elsewhere. | 1157   # caught elsewhere. | 
| 1151   return warnings | 1158   return warnings | 
| OLD | NEW | 
|---|