Index: presubmit_canned_checks.py |
diff --git a/presubmit_canned_checks.py b/presubmit_canned_checks.py |
index 7fbedecef574f15d13bab30b6adcce4d31978989..422ba422d2dd4d73e3d85ea3893e3bfc9ee59fb3 100644 |
--- a/presubmit_canned_checks.py |
+++ b/presubmit_canned_checks.py |
@@ -626,21 +626,27 @@ def _FetchAllFiles(input_api, white_list, black_list): |
def RunPylint(input_api, output_api, white_list=None, black_list=None, |
- disabled_warnings=None): |
+ disabled_warnings=None, extra_paths_list=None): |
"""Run pylint on python files. |
The default white_list enforces looking only at *.py files. |
""" |
white_list = tuple(white_list or ('.*\.py$',)) |
black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST) |
+ extra_paths_list = extra_paths_list or [] |
+ |
if input_api.is_committing: |
error_type = output_api.PresubmitError |
else: |
error_type = output_api.PresubmitPromptWarning |
# Only trigger if there is at least one python file affected. |
- src_filter = lambda x: input_api.FilterSourceFile(x, white_list, black_list) |
+ rel_path = lambda x : input_api.os_path.join(input_api.os_path.relpath( |
+ input_api.PresubmitLocalPath(), input_api.change.RepositoryRoot()), x) |
+ src_filter = lambda x: input_api.FilterSourceFile( |
+ x, map(rel_path, white_list), map(rel_path, black_list)) |
if not input_api.AffectedSourceFiles(src_filter): |
+ input_api.logging.info('Skipping pylint: no matching changes.') |
return [] |
extra_args = ['--rcfile=%s' % input_api.os_path.join(_HERE, 'pylintrc')] |
@@ -651,11 +657,13 @@ def RunPylint(input_api, output_api, white_list=None, black_list=None, |
if not files: |
return [] |
+ input_api.logging.info('Running pylint on: %s', files) |
# Copy the system path to the environment so pylint can find the right |
# imports. |
env = input_api.environ.copy() |
import sys |
- env['PYTHONPATH'] = input_api.os_path.pathsep.join(sys.path) |
+ env['PYTHONPATH'] = input_api.os_path.pathsep.join( |
+ extra_paths_list + sys.path) |
def run_lint(files): |
# We can't import pylint directly due to licensing issues, so we run |
@@ -687,7 +695,11 @@ def RunPylint(input_api, output_api, white_list=None, black_list=None, |
# different results. input_api.verbose used to be used |
# to enable this behaviour but differing behaviour in |
# verbose mode is not desirable. |
+ # Leave this unreachable code in here so users can make |
+ # a quick local edit to diagnose pylint issues more |
+ # easily. |
if True: |
+ print('Running pylint on %d files.' % len(files)) |
result = run_lint(sorted(files)) |
else: |
for filename in sorted(files): |