3300b1aca7
Pylint only [checks for pylintrc] (and .pylintrc) files in the packages aboves its current directory before falling back to user and global pylintrc. For projects with a src dir, running pylint from the directory containing the file will not use the project pylintrc. Adopt the convention used by many other Python linters of running from the project root, which solves this issue. Add pylintrc and .pylintrc to FindProjectRoot. Update docs. [checks for pylintrc]: https://github.com/PyCQA/pylint/blob/pylint-2.2.2/pylint/config.py#L106 Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
79 lines
3.2 KiB
Text
79 lines
3.2 KiB
Text
Before:
|
|
call ale#assert#SetUpLinterTest('python', 'pylint')
|
|
|
|
let b:bin_dir = has('win32') ? 'Scripts' : 'bin'
|
|
let b:command_tail = ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
|
|
|
After:
|
|
unlet! b:bin_dir
|
|
unlet! b:executable
|
|
unlet! b:command_tail
|
|
|
|
call ale#assert#TearDownLinterTest()
|
|
|
|
Execute(The pylint callbacks should return the correct default values):
|
|
AssertLinter 'pylint',
|
|
\ ale#path#BufferCdString(bufnr(''))
|
|
\ . ale#Escape('pylint') . ' ' . b:command_tail
|
|
|
|
Execute(The option for disabling changing directories should work):
|
|
let g:ale_python_pylint_change_directory = 0
|
|
|
|
AssertLinter 'pylint', ale#Escape('pylint') . ' ' . b:command_tail
|
|
|
|
Execute(The pylint executable should be configurable, and escaped properly):
|
|
let g:ale_python_pylint_executable = 'executable with spaces'
|
|
|
|
AssertLinter 'executable with spaces',
|
|
\ ale#path#BufferCdString(bufnr(''))
|
|
\ . ale#Escape('executable with spaces') . ' ' . b:command_tail
|
|
|
|
Execute(The pylint command callback should let you set options):
|
|
let g:ale_python_pylint_options = '--some-option'
|
|
|
|
AssertLinter 'pylint',
|
|
\ ale#path#BufferCdString(bufnr(''))
|
|
\ . ale#Escape('pylint') . ' --some-option' . b:command_tail
|
|
|
|
Execute(The pylint callbacks shouldn't detect virtualenv directories where they don't exist):
|
|
silent execute 'file ' . fnameescape(g:dir . '/python_paths/no_virtualenv/subdir/foo/bar.py')
|
|
|
|
AssertLinter 'pylint',
|
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/no_virtualenv/subdir'))
|
|
\ . ale#Escape('pylint') . ' ' . b:command_tail
|
|
|
|
Execute(The pylint callbacks should detect virtualenv directories):
|
|
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
|
|
|
|
let b:executable = ale#path#Simplify(
|
|
\ g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/pylint'
|
|
\)
|
|
|
|
AssertLinter b:executable,
|
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir'))
|
|
\ . ale#Escape(b:executable) . ' ' . b:command_tail
|
|
|
|
Execute(You should able able to use the global pylint instead):
|
|
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
|
|
let g:ale_python_pylint_use_global = 1
|
|
|
|
AssertLinter 'pylint',
|
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir'))
|
|
\ . ale#Escape('pylint') . ' ' . b:command_tail
|
|
|
|
Execute(Setting executable to 'pipenv' appends 'run pylint'):
|
|
let g:ale_python_pylint_executable = 'path/to/pipenv'
|
|
|
|
AssertLinter 'path/to/pipenv',
|
|
\ ale#path#BufferCdString(bufnr(''))
|
|
\ . ale#Escape('path/to/pipenv') . ' run pylint'
|
|
\ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
|
|
|
Execute(Pipenv is detected when python_pylint_auto_pipenv is set):
|
|
let g:ale_python_pylint_auto_pipenv = 1
|
|
call ale#test#SetFilename('/testplugin/test/python_fixtures/pipenv/whatever.py')
|
|
|
|
AssertLinter 'pipenv',
|
|
\ ale#path#BufferCdString(bufnr(''))
|
|
\ . ale#Escape('pipenv') . ' run pylint'
|
|
\ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|