summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2020-08-31 09:12:36 +0100
committerw0rp <devw0rp@gmail.com>2020-08-31 09:12:36 +0100
commitac2100d410378906d7d277561f50ae3305b6429e (patch)
tree63b0892541173721c1c1e732befa11bdd1458cc6
parentcdaeca452e7fe24b117ac840b392fe4e89acda57 (diff)
downloadale-ac2100d410378906d7d277561f50ae3305b6429e.zip
Fix flake8 cd logic for invalid options
-rw-r--r--ale_linters/python/flake8.vim26
-rw-r--r--test/command_callback/test_flake8_command_callback.vader20
2 files changed, 31 insertions, 15 deletions
diff --git a/ale_linters/python/flake8.vim b/ale_linters/python/flake8.vim
index 85216ae8..fc4ab692 100644
--- a/ale_linters/python/flake8.vim
+++ b/ale_linters/python/flake8.vim
@@ -40,27 +40,23 @@ endfunction
function! ale_linters#python#flake8#GetCdString(buffer) abort
let l:change_directory = ale#Var(a:buffer, 'python_flake8_change_directory')
+ let l:cd_string = ''
- " map legacy options to new ones
- if l:change_directory is# 1
- let l:change_directory = 'file'
- elseif l:change_directory is# 0
- let l:change_directory = 'off'
- endif
+ if l:change_directory is# 'project'
+ let l:project_root = ale#python#FindProjectRootIni(a:buffer)
- if l:change_directory is# 'file'
- return ale#path#BufferCdString(a:buffer)
- elseif l:change_directory is# 'off'
- return ''
+ if !empty(l:project_root)
+ let l:cd_string = ale#path#CdString(l:project_root)
+ endif
endif
- let l:project_root = ale#python#FindProjectRootIni(a:buffer)
-
- if !empty(l:project_root)
- return ale#path#CdString(l:project_root)
+ if (l:change_directory is# 'project' && empty(l:cd_string))
+ \|| l:change_directory is# 1
+ \|| l:change_directory is# 'file'
+ let l:cd_string = ale#path#BufferCdString(a:buffer)
endif
- return ale#path#BufferCdString(a:buffer)
+ return l:cd_string
endfunction
function! ale_linters#python#flake8#GetCommand(buffer, version) abort
diff --git a/test/command_callback/test_flake8_command_callback.vader b/test/command_callback/test_flake8_command_callback.vader
index 0f370983..09f64ee3 100644
--- a/test/command_callback/test_flake8_command_callback.vader
+++ b/test/command_callback/test_flake8_command_callback.vader
@@ -41,6 +41,19 @@ Execute(The option for disabling changing directories should work):
\ ale#Escape('flake8') . ' --format=default --stdin-display-name %s -',
\]
+ let g:ale_python_flake8_change_directory = 0
+
+ AssertLinter 'flake8', [
+ \ ale#Escape('flake8') . ' --format=default --stdin-display-name %s -',
+ \]
+
+ " Invalid options should be considered the same as turning the setting off.
+ let g:ale_python_flake8_change_directory = 'xxx'
+
+ AssertLinter 'flake8', [
+ \ ale#Escape('flake8') . ' --format=default --stdin-display-name %s -',
+ \]
+
Execute(The option for changing directory to project root should work):
silent execute 'file ' . fnameescape(g:dir . '/python_paths/namespace_package_tox/namespace/foo/bar.py')
@@ -60,6 +73,13 @@ Execute(The option for changing directory to file dir should work):
\ . ale#Escape('flake8') . ' --format=default --stdin-display-name %s -',
\]
+ let g:ale_python_flake8_change_directory = 1
+
+ AssertLinter 'flake8', [
+ \ ale#path#BufferCdString(bufnr(''))
+ \ . ale#Escape('flake8') . ' --format=default --stdin-display-name %s -',
+ \]
+
Execute(The flake8 command callback should let you set options):
let g:ale_python_flake8_options = '--some-option'