mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-07 21:24:33 +08:00
Close #2281 - Separate cwd commands from commands
Working directories are now set seperately from the commands so they can later be swapped out when running linters over projects is supported, and also better support filename mapping for running linters on other machines in future.
This commit is contained in:
@@ -18,75 +18,64 @@ After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The pylint callbacks should return the correct default values):
|
||||
AssertLinter 'pylint',
|
||||
\ ale#path#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('pylint') . b:command_tail
|
||||
AssertLinterCwd expand('%:p:h')
|
||||
AssertLinter 'pylint', ale#Escape('pylint') . b:command_tail
|
||||
|
||||
Execute(Pylint should run with the --from-stdin in new enough versions):
|
||||
GivenCommandOutput ['pylint 2.4.0']
|
||||
|
||||
AssertLinter 'pylint',
|
||||
\ ale#path#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('pylint') . b:command_tail[:-3] . '--from-stdin %s'
|
||||
AssertLinterCwd expand('%:p:h')
|
||||
AssertLinter 'pylint', ale#Escape('pylint') . b:command_tail[:-3] . '--from-stdin %s'
|
||||
|
||||
Execute(The option for disabling changing directories should work):
|
||||
let g:ale_python_pylint_change_directory = 0
|
||||
|
||||
AssertLinterCwd ''
|
||||
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#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('executable with spaces') . b:command_tail
|
||||
AssertLinter 'executable with spaces', 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#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('pylint') . ' --some-option' . b:command_tail
|
||||
AssertLinter 'pylint', 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')
|
||||
call ale#test#SetFilename('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
|
||||
AssertLinterCwd ale#path#Simplify(g:dir . '/python_paths/no_virtualenv/subdir')
|
||||
AssertLinter 'pylint', 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')
|
||||
|
||||
call ale#test#SetFilename('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
|
||||
AssertLinterCwd ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir')
|
||||
AssertLinter b:executable, 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')
|
||||
call ale#test#SetFilename('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
|
||||
AssertLinterCwd ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir')
|
||||
AssertLinter 'pylint', ale#Escape('pylint') . b:command_tail
|
||||
|
||||
Execute(Setting executable to 'pipenv' appends 'run pylint'):
|
||||
let g:ale_python_pylint_executable = 'path/to/pipenv'
|
||||
let g:ale_python_pylint_use_global = 1
|
||||
|
||||
AssertLinter 'path/to/pipenv',
|
||||
\ ale#path#CdString(expand('#' . bufnr('') . ':p:h'))
|
||||
\ . ale#Escape('path/to/pipenv') . ' run pylint'
|
||||
AssertLinter 'path/to/pipenv', 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('../python_fixtures/pipenv/whatever.py')
|
||||
|
||||
AssertLinter 'pipenv',
|
||||
\ ale#path#CdString(expand('#' . bufnr('') . ':p:h'))
|
||||
\ . ale#Escape('pipenv') . ' run pylint'
|
||||
AssertLinterCwd expand('%:p:h')
|
||||
AssertLinter 'pipenv', ale#Escape('pipenv') . ' run pylint'
|
||||
\ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
||||
|
||||
Reference in New Issue
Block a user