From 433b23be17095c0211685ff32e25fcdbfffe2ce7 Mon Sep 17 00:00:00 2001 From: Gonzalo Quero Date: Wed, 2 Sep 2020 13:08:46 +0100 Subject: [PATCH 1/5] feat: Add optional configuration file for Credo --- ale_linters/elixir/credo.vim | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ale_linters/elixir/credo.vim b/ale_linters/elixir/credo.vim index 7c298502..15ebefb5 100644 --- a/ale_linters/elixir/credo.vim +++ b/ale_linters/elixir/credo.vim @@ -45,6 +45,16 @@ function! ale_linters#elixir#credo#GetMode() abort endif endfunction +function! ale_linters#elixir#credo#GetConfigFile() abort + let l:config_file = get(g:, 'ale_elixir_credo_config_file', '') + + if len(l:config_file) == 0 + return '' + else + return ' --config-file ' . l:config_file + endif +endfunction + function! ale_linters#elixir#credo#GetCommand(buffer) abort let l:project_root = ale#handlers#elixir#FindMixUmbrellaRoot(a:buffer) let l:mode = ale_linters#elixir#credo#GetMode() @@ -52,6 +62,7 @@ function! ale_linters#elixir#credo#GetCommand(buffer) abort return ale#path#CdString(l:project_root) \ . 'mix help credo && ' \ . 'mix credo ' . ale_linters#elixir#credo#GetMode() + \ . ale_linters#elixir#credo#GetConfigFile() \ . ' --format=flycheck --read-from-stdin %s' endfunction From 7d8275daf57269df0fb8f32f421344bea6364cb5 Mon Sep 17 00:00:00 2001 From: Gonzalo Quero Date: Wed, 2 Sep 2020 13:39:32 +0100 Subject: [PATCH 2/5] chore: Add Elixir Credo tests --- test/test_elixir_credo.vader | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 test/test_elixir_credo.vader diff --git a/test/test_elixir_credo.vader b/test/test_elixir_credo.vader new file mode 100644 index 00000000..db956683 --- /dev/null +++ b/test/test_elixir_credo.vader @@ -0,0 +1,33 @@ +Before: + call ale#test#SetDirectory('/testplugin/test') + + runtime ale_linters/elixir/credo.vim + +After: + call ale#test#RestoreDirectory() + call ale#linter#Reset() + let g:ale_elixir_credo_strict = 0 + let g:ale_elixir_credo_config_file = '' + +Execute(credo runs the right command): + call ale#test#SetFilename('elixir-test-files/testfile.ex') + + AssertEqual + \ ale_linters#elixir#credo#GetCommand(bufnr('')), + \ 'cd ''.'' && mix help credo && mix credo suggest --format=flycheck --read-from-stdin %s' + +Execute(credo runs the right command with the strict flag): + let g:ale_elixir_credo_strict = 1 + call ale#test#SetFilename('elixir-test-files/testfile.ex') + + AssertEqual + \ ale_linters#elixir#credo#GetCommand(bufnr('')), + \ 'cd ''.'' && mix help credo && mix credo --strict --format=flycheck --read-from-stdin %s' + +Execute(credo runs the right command with a custom config file): + let g:ale_elixir_credo_config_file = '/home/user/custom_credo.exs' + call ale#test#SetFilename('elixir-test-files/testfile.ex') + + AssertEqual + \ ale_linters#elixir#credo#GetCommand(bufnr('')), + \ 'cd ''.'' && mix help credo && mix credo suggest --config-file /home/user/custom_credo.exs --format=flycheck --read-from-stdin %s' From 05d5cc49881bfef6cfcdf1f6bcf5771d9a8a4b93 Mon Sep 17 00:00:00 2001 From: Gonzalo Quero Date: Wed, 2 Sep 2020 13:39:51 +0100 Subject: [PATCH 3/5] chore: Document config_file variable --- doc/ale-elixir.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/ale-elixir.txt b/doc/ale-elixir.txt index de9daacf..a4e5c2c6 100644 --- a/doc/ale-elixir.txt +++ b/doc/ale-elixir.txt @@ -85,5 +85,12 @@ g:ale_elixir_credo_strict *g:ale_elixir_credo_strict* Tells credo to run in strict mode or suggest mode. Set variable to 1 to enable --strict mode. +g:ale_elixir_credo_config_file g:ale_elixir_credo_config_file + + Type: String + Default: '' + + Tells credo to use a custom configuration file. + =============================================================================== vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: From 491ceacb64f7be6c4e36fd6586af22adfd6a309e Mon Sep 17 00:00:00 2001 From: Gonzalo Quero Date: Wed, 2 Sep 2020 14:31:11 +0100 Subject: [PATCH 4/5] fix: Use proper CdPath function in test --- test/test_elixir_credo.vader | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/test_elixir_credo.vader b/test/test_elixir_credo.vader index db956683..78d3e0a6 100644 --- a/test/test_elixir_credo.vader +++ b/test/test_elixir_credo.vader @@ -2,19 +2,21 @@ Before: call ale#test#SetDirectory('/testplugin/test') runtime ale_linters/elixir/credo.vim + let g:test_command_start = ale#path#CdString('.') . 'mix help credo && ' After: call ale#test#RestoreDirectory() call ale#linter#Reset() let g:ale_elixir_credo_strict = 0 let g:ale_elixir_credo_config_file = '' + let g:test_command_start = '' Execute(credo runs the right command): call ale#test#SetFilename('elixir-test-files/testfile.ex') AssertEqual \ ale_linters#elixir#credo#GetCommand(bufnr('')), - \ 'cd ''.'' && mix help credo && mix credo suggest --format=flycheck --read-from-stdin %s' + \ g:test_command_start . 'mix credo suggest --format=flycheck --read-from-stdin %s' Execute(credo runs the right command with the strict flag): let g:ale_elixir_credo_strict = 1 @@ -22,7 +24,7 @@ Execute(credo runs the right command with the strict flag): AssertEqual \ ale_linters#elixir#credo#GetCommand(bufnr('')), - \ 'cd ''.'' && mix help credo && mix credo --strict --format=flycheck --read-from-stdin %s' + \ g:test_command_start . 'mix credo --strict --format=flycheck --read-from-stdin %s' Execute(credo runs the right command with a custom config file): let g:ale_elixir_credo_config_file = '/home/user/custom_credo.exs' @@ -30,4 +32,4 @@ Execute(credo runs the right command with a custom config file): AssertEqual \ ale_linters#elixir#credo#GetCommand(bufnr('')), - \ 'cd ''.'' && mix help credo && mix credo suggest --config-file /home/user/custom_credo.exs --format=flycheck --read-from-stdin %s' + \ g:test_command_start . 'mix credo suggest --config-file /home/user/custom_credo.exs --format=flycheck --read-from-stdin %s' From 7e9d4fbfc820ae4198b07b204295fc3acd391209 Mon Sep 17 00:00:00 2001 From: Gonzalo Quero Date: Mon, 23 Nov 2020 10:21:09 +0000 Subject: [PATCH 5/5] refactor: Move test to the right file --- ale_linters/elixir/credo.vim | 6 ++-- test/command_callback/test_elixir_credo.vader | 7 ++++ test/test_elixir_credo.vader | 35 ------------------- 3 files changed, 10 insertions(+), 38 deletions(-) delete mode 100644 test/test_elixir_credo.vader diff --git a/ale_linters/elixir/credo.vim b/ale_linters/elixir/credo.vim index 15ebefb5..892d47b9 100644 --- a/ale_linters/elixir/credo.vim +++ b/ale_linters/elixir/credo.vim @@ -48,11 +48,11 @@ endfunction function! ale_linters#elixir#credo#GetConfigFile() abort let l:config_file = get(g:, 'ale_elixir_credo_config_file', '') - if len(l:config_file) == 0 + if empty(l:config_file) return '' - else - return ' --config-file ' . l:config_file endif + + return ' --config-file ' . l:config_file endfunction function! ale_linters#elixir#credo#GetCommand(buffer) abort diff --git a/test/command_callback/test_elixir_credo.vader b/test/command_callback/test_elixir_credo.vader index 3eb88846..b14444c6 100644 --- a/test/command_callback/test_elixir_credo.vader +++ b/test/command_callback/test_elixir_credo.vader @@ -38,3 +38,10 @@ Execute(Builds credo command with suggest mode when set to 0): AssertLinter 'mix', \ ale#path#CdString(ale#path#Simplify(g:dir . '/elixir_paths/mix_project')) \ . 'mix help credo && mix credo suggest --format=flycheck --read-from-stdin %s' + +Execute(Builds credo command with a custom config file): + let g:ale_elixir_credo_config_file = '/home/user/custom_credo.exs' + + AssertLinter 'mix', + \ ale#path#CdString(ale#path#Simplify(g:dir . '/elixir_paths/mix_project')) + \ . 'mix help credo && mix credo suggest --config-file /home/user/custom_credo.exs --format=flycheck --read-from-stdin %s' diff --git a/test/test_elixir_credo.vader b/test/test_elixir_credo.vader deleted file mode 100644 index 78d3e0a6..00000000 --- a/test/test_elixir_credo.vader +++ /dev/null @@ -1,35 +0,0 @@ -Before: - call ale#test#SetDirectory('/testplugin/test') - - runtime ale_linters/elixir/credo.vim - let g:test_command_start = ale#path#CdString('.') . 'mix help credo && ' - -After: - call ale#test#RestoreDirectory() - call ale#linter#Reset() - let g:ale_elixir_credo_strict = 0 - let g:ale_elixir_credo_config_file = '' - let g:test_command_start = '' - -Execute(credo runs the right command): - call ale#test#SetFilename('elixir-test-files/testfile.ex') - - AssertEqual - \ ale_linters#elixir#credo#GetCommand(bufnr('')), - \ g:test_command_start . 'mix credo suggest --format=flycheck --read-from-stdin %s' - -Execute(credo runs the right command with the strict flag): - let g:ale_elixir_credo_strict = 1 - call ale#test#SetFilename('elixir-test-files/testfile.ex') - - AssertEqual - \ ale_linters#elixir#credo#GetCommand(bufnr('')), - \ g:test_command_start . 'mix credo --strict --format=flycheck --read-from-stdin %s' - -Execute(credo runs the right command with a custom config file): - let g:ale_elixir_credo_config_file = '/home/user/custom_credo.exs' - call ale#test#SetFilename('elixir-test-files/testfile.ex') - - AssertEqual - \ ale_linters#elixir#credo#GetCommand(bufnr('')), - \ g:test_command_start . 'mix credo suggest --config-file /home/user/custom_credo.exs --format=flycheck --read-from-stdin %s'