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

Side by Side Diff: presubmit_canned_checks.py

Issue 1208743002: Changes to improve multiprocessing PRESUBMIT support in Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: fix tests Created 5 years, 5 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 | presubmit_support.py » ('j') | presubmit_support.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « no previous file | presubmit_support.py » ('j') | presubmit_support.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698