| OLD | NEW |
| 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2011 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 | 7 |
| 8 ### Description checks | 8 ### Description checks |
| 9 | 9 |
| 10 def CheckChangeHasTestField(input_api, output_api): | 10 def CheckChangeHasTestField(input_api, output_api): |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 import warnings | 627 import warnings |
| 628 warnings.filterwarnings('ignore', category=DeprecationWarning) | 628 warnings.filterwarnings('ignore', category=DeprecationWarning) |
| 629 try: | 629 try: |
| 630 files = _FetchAllFiles(input_api, white_list, black_list) | 630 files = _FetchAllFiles(input_api, white_list, black_list) |
| 631 if not files: | 631 if not files: |
| 632 return [] | 632 return [] |
| 633 # Now that at least one python file was modified and all the python files | 633 # Now that at least one python file was modified and all the python files |
| 634 # were listed, try to run pylint. | 634 # were listed, try to run pylint. |
| 635 try: | 635 try: |
| 636 from pylint import lint | 636 from pylint import lint |
| 637 from pylint.utils import UnknownMessage |
| 637 input_api.logging.debug( | 638 input_api.logging.debug( |
| 638 'Using pylint v%s from %s' % (lint.version, lint.__file__)) | 639 'Using pylint v%s from %s' % (lint.version, lint.__file__)) |
| 639 except ImportError: | 640 except ImportError: |
| 640 if input_api.platform == 'win32': | 641 if input_api.platform == 'win32': |
| 641 return [output_api.PresubmitNotifyResult( | 642 return [output_api.PresubmitNotifyResult( |
| 642 'Warning: Can\'t run pylint because it is not installed. Please ' | 643 'Warning: Can\'t run pylint because it is not installed. Please ' |
| 643 'install manually\n' | 644 'install manually\n' |
| 644 'Cannot do static analysis of python files.')] | 645 'Cannot do static analysis of python files.')] |
| 645 return [output_api.PresubmitError( | 646 return [output_api.PresubmitError( |
| 646 'Please install pylint with "sudo apt-get install python-setuptools; ' | 647 'Please install pylint with "sudo apt-get install python-setuptools; ' |
| 647 'sudo easy_install pylint"\n' | 648 'sudo easy_install pylint"\n' |
| 648 'or visit http://pypi.python.org/pypi/setuptools.\n' | 649 'or visit http://pypi.python.org/pypi/setuptools.\n' |
| 649 'Cannot do static analysis of python files.')] | 650 'Cannot do static analysis of python files.')] |
| 650 | 651 |
| 651 def run_lint(files): | 652 def run_lint(files): |
| 652 try: | 653 try: |
| 653 lint.Run(files) | 654 lint.Run(files) |
| 654 assert False | 655 assert False |
| 655 except SystemExit, e: | 656 except SystemExit, e: |
| 656 # pylint has the bad habit of calling sys.exit(), trap it here. | 657 # pylint has the bad habit of calling sys.exit(), trap it here. |
| 657 return e.code | 658 return e.code |
| 659 except UnknownMessage, e: |
| 660 return 'Please upgrade pylint: %s' % e |
| 658 | 661 |
| 659 result = None | 662 result = None |
| 660 if not input_api.verbose: | 663 if not input_api.verbose: |
| 661 result = run_lint(sorted(files)) | 664 result = run_lint(sorted(files)) |
| 662 else: | 665 else: |
| 663 for filename in sorted(files): | 666 for filename in sorted(files): |
| 664 print('Running pylint on %s' % filename) | 667 print('Running pylint on %s' % filename) |
| 665 out = run_lint([filename]) | 668 result = run_lint([filename]) or result |
| 666 if out: | 669 if isinstance(result, basestring): |
| 667 result = out | 670 return [error_type(result)] |
| 668 if result: | 671 elif result: |
| 669 return [error_type('Fix pylint errors first.')] | 672 return [error_type('Fix pylint errors first.')] |
| 670 return [] | 673 return [] |
| 671 finally: | 674 finally: |
| 672 warnings.filterwarnings('default', category=DeprecationWarning) | 675 warnings.filterwarnings('default', category=DeprecationWarning) |
| 673 | 676 |
| 674 | 677 |
| 675 # TODO(dpranke): Get the host_url from the input_api instead | 678 # TODO(dpranke): Get the host_url from the input_api instead |
| 676 def CheckRietveldTryJobExecution(input_api, output_api, host_url, platforms, | 679 def CheckRietveldTryJobExecution(input_api, output_api, host_url, platforms, |
| 677 owner): | 680 owner): |
| 678 if not input_api.is_committing: | 681 if not input_api.is_committing: |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 952 results.extend(input_api.canned_checks.CheckSvnForCommonMimeTypes( | 955 results.extend(input_api.canned_checks.CheckSvnForCommonMimeTypes( |
| 953 input_api, output_api)) | 956 input_api, output_api)) |
| 954 snapshot("checking license") | 957 snapshot("checking license") |
| 955 results.extend(input_api.canned_checks.CheckLicense( | 958 results.extend(input_api.canned_checks.CheckLicense( |
| 956 input_api, output_api, license_header, source_file_filter=sources)) | 959 input_api, output_api, license_header, source_file_filter=sources)) |
| 957 snapshot("checking was uploaded") | 960 snapshot("checking was uploaded") |
| 958 results.extend(input_api.canned_checks.CheckChangeWasUploaded( | 961 results.extend(input_api.canned_checks.CheckChangeWasUploaded( |
| 959 input_api, output_api)) | 962 input_api, output_api)) |
| 960 snapshot("done") | 963 snapshot("done") |
| 961 return results | 964 return results |
| OLD | NEW |