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

Side by Side Diff: presubmit_canned_checks.py

Issue 6799021: Switch from xml.dom.minidom to xml.etree (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 9 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « gclient_utils.py ('k') | rietveld.py » ('j') | rietveld.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2010 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 526 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 if Find(filepath, white_list) and not Find(filepath, black_list): 537 if Find(filepath, white_list) and not Find(filepath, black_list):
538 files.append(filepath) 538 files.append(filepath)
539 return files 539 return files
540 540
541 541
542 def RunPylint(input_api, output_api, white_list=None, black_list=None): 542 def RunPylint(input_api, output_api, white_list=None, black_list=None):
543 """Run pylint on python files. 543 """Run pylint on python files.
544 544
545 The default white_list enforces looking only a *.py files. 545 The default white_list enforces looking only a *.py files.
546 """ 546 """
547 verbose = False
547 white_list = white_list or ['.*\.py$'] 548 white_list = white_list or ['.*\.py$']
548 black_list = black_list or input_api.DEFAULT_BLACK_LIST 549 black_list = black_list or input_api.DEFAULT_BLACK_LIST
550 if input_api.is_committing:
551 error_type = output_api.PresubmitError
552 else:
553 error_type = output_api.PresubmitPromptWarning
549 554
550 # Only trigger if there is at least one python file affected. 555 # Only trigger if there is at least one python file affected.
551 src_filter = lambda x: input_api.FilterSourceFile(x, white_list, black_list) 556 src_filter = lambda x: input_api.FilterSourceFile(x, white_list, black_list)
552 if not input_api.AffectedSourceFiles(src_filter): 557 if not input_api.AffectedSourceFiles(src_filter):
553 return [] 558 return []
554 559
555 # On certain pylint/python version combination, running pylint throws a lot of 560 # On certain pylint/python version combination, running pylint throws a lot of
556 # warning messages. 561 # warning messages.
557 import warnings 562 import warnings
558 warnings.filterwarnings('ignore', category=DeprecationWarning) 563 warnings.filterwarnings('ignore', category=DeprecationWarning)
559 try: 564 try:
560 files = _FetchAllFiles(input_api, white_list, black_list) 565 files = _FetchAllFiles(input_api, white_list, black_list)
561 if not files: 566 if not files:
562 return [] 567 return []
563 # Now that at least one python file was modified and all the python files 568 # Now that at least one python file was modified and all the python files
564 # were listed, try to run pylint. 569 # were listed, try to run pylint.
565 try: 570 try:
566 from pylint import lint 571 from pylint import lint
567 result = lint.Run(sorted(files))
568 except SystemExit, e:
569 # pylint has the bad habit of calling sys.exit(), trap it here.
570 result = e.code
571 except ImportError: 572 except ImportError:
572 if input_api.platform == 'win32': 573 if input_api.platform == 'win32':
573 return [output_api.PresubmitNotifyResult( 574 return [output_api.PresubmitNotifyResult(
574 'Warning: Can\'t run pylint because it is not installed. Please ' 575 'Warning: Can\'t run pylint because it is not installed. Please '
575 'install manually\n' 576 'install manually\n'
576 'Cannot do static analysis of python files.')] 577 'Cannot do static analysis of python files.')]
577 return [output_api.PresubmitError( 578 return [output_api.PresubmitError(
578 'Please install pylint with "sudo apt-get install python-setuptools; ' 579 'Please install pylint with "sudo apt-get install python-setuptools; '
579 'sudo easy_install pylint"\n' 580 'sudo easy_install pylint"\n'
580 'or visit http://pypi.python.org/pypi/setuptools.\n' 581 'or visit http://pypi.python.org/pypi/setuptools.\n'
581 'Cannot do static analysis of python files.')] 582 'Cannot do static analysis of python files.')]
583
584 def run_lint(files):
585 try:
586 lint.Run(files)
587 assert False
588 except SystemExit, e:
589 # pylint has the bad habit of calling sys.exit(), trap it here.
590 return e.code
591
592 result = None
593 if not verbose:
594 result = run_lint(sorted(files))
595 else:
596 for filename in sorted(files):
597 print('Running pylint on %s' % filename)
598 out = run_lint([filename])
599 if out:
600 result = out
582 if result: 601 if result:
583 if input_api.is_committing:
584 error_type = output_api.PresubmitError
585 else:
586 error_type = output_api.PresubmitPromptWarning
587 return [error_type('Fix pylint errors first.')] 602 return [error_type('Fix pylint errors first.')]
588 return [] 603 return []
589 finally: 604 finally:
590 warnings.filterwarnings('default', category=DeprecationWarning) 605 warnings.filterwarnings('default', category=DeprecationWarning)
591 606
607
592 # TODO(dpranke): Get the host_url from the input_api instead 608 # TODO(dpranke): Get the host_url from the input_api instead
593 def CheckRietveldTryJobExecution(input_api, output_api, host_url, platforms, 609 def CheckRietveldTryJobExecution(input_api, output_api, host_url, platforms,
594 owner): 610 owner):
595 if not input_api.is_committing: 611 if not input_api.is_committing:
596 return [] 612 return []
597 if not input_api.change.issue or not input_api.change.patchset: 613 if not input_api.change.issue or not input_api.change.patchset:
598 return [] 614 return []
599 url = '%s/%d/get_build_results/%d' % ( 615 url = '%s/%d/get_build_results/%d' % (
600 host_url, input_api.change.issue, input_api.change.patchset) 616 host_url, input_api.change.issue, input_api.change.patchset)
601 try: 617 try:
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 input_api, output_api, source_file_filter=text_files)) 895 input_api, output_api, source_file_filter=text_files))
880 results.extend(input_api.canned_checks.CheckSvnForCommonMimeTypes( 896 results.extend(input_api.canned_checks.CheckSvnForCommonMimeTypes(
881 input_api, output_api)) 897 input_api, output_api))
882 results.extend(input_api.canned_checks.CheckLicense( 898 results.extend(input_api.canned_checks.CheckLicense(
883 input_api, output_api, license_header, source_file_filter=sources)) 899 input_api, output_api, license_header, source_file_filter=sources))
884 results.extend(_CheckConstNSObject( 900 results.extend(_CheckConstNSObject(
885 input_api, output_api, source_file_filter=sources)) 901 input_api, output_api, source_file_filter=sources))
886 results.extend(_CheckSingletonInHeaders( 902 results.extend(_CheckSingletonInHeaders(
887 input_api, output_api, source_file_filter=sources)) 903 input_api, output_api, source_file_filter=sources))
888 return results 904 return results
OLDNEW
« no previous file with comments | « gclient_utils.py ('k') | rietveld.py » ('j') | rietveld.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698