summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-08-21 18:42:18 +0100
committerw0rp <devw0rp@gmail.com>2017-08-21 18:42:18 +0100
commita3299bf03a405207347d8d06c28b65af1e0a5092 (patch)
tree67f072993f1e549589797d64a4b4974cc0002044
parentcc02eb8a5a0e40e23ae5e3cc2a4e92f0353d30b5 (diff)
downloadale-a3299bf03a405207347d8d06c28b65af1e0a5092.zip
Fix #864 - Use the user's configured executable for phpstan for executable() checks
-rw-r--r--ale_linters/php/phpstan.vim10
-rw-r--r--test/command_callback/test_phpstan_command_callbacks.vader29
-rw-r--r--test/handler/test_phpstan_handler.vader (renamed from test/test_phpstan_executable_detection.vader)44
3 files changed, 41 insertions, 42 deletions
diff --git a/ale_linters/php/phpstan.vim b/ale_linters/php/phpstan.vim
index 69173ef4..b99e4f58 100644
--- a/ale_linters/php/phpstan.vim
+++ b/ale_linters/php/phpstan.vim
@@ -5,8 +5,14 @@
let g:ale_php_phpstan_executable = get(g:, 'ale_php_phpstan_executable', 'phpstan')
let g:ale_php_phpstan_level = get(g:, 'ale_php_phpstan_level', '4')
-function! ale_linters#php#phpstan#GetCommand(buffer) abort
+function! ale_linters#php#phpstan#GetExecutable(buffer) abort
return ale#Var(a:buffer, 'php_phpstan_executable')
+endfunction
+
+function! ale_linters#php#phpstan#GetCommand(buffer) abort
+ let l:executable = ale_linters#php#phpstan#GetExecutable(a:buffer)
+
+ return ale#Escape(l:executable)
\ . ' analyze -l'
\ . ale#Var(a:buffer, 'php_phpstan_level')
\ . ' --errorFormat raw'
@@ -34,7 +40,7 @@ endfunction
call ale#linter#Define('php', {
\ 'name': 'phpstan',
-\ 'executable': 'phpstan',
+\ 'executable_callback': 'ale_linters#php#phpstan#GetExecutable',
\ 'command_callback': 'ale_linters#php#phpstan#GetCommand',
\ 'callback': 'ale_linters#php#phpstan#Handle',
\})
diff --git a/test/command_callback/test_phpstan_command_callbacks.vader b/test/command_callback/test_phpstan_command_callbacks.vader
new file mode 100644
index 00000000..7366df8b
--- /dev/null
+++ b/test/command_callback/test_phpstan_command_callbacks.vader
@@ -0,0 +1,29 @@
+Before:
+ Save g:ale_php_phpstan_executable
+ Save g:ale_php_phpstan_level
+
+ unlet! g:ale_php_phpstan_executable
+ unlet! g:ale_php_phpstan_level
+
+ runtime ale_linters/php/phpstan.vim
+
+After:
+ Restore
+
+ call ale#linter#Reset()
+
+Execute(Custom executables should be used for the executable and command):
+ let g:ale_php_phpstan_executable = 'phpstan_test'
+
+ AssertEqual 'phpstan_test', ale_linters#php#phpstan#GetExecutable(bufnr(''))
+ AssertEqual
+ \ ale#Escape('phpstan_test') . ' analyze -l4 --errorFormat raw %s',
+ \ ale_linters#php#phpstan#GetCommand(bufnr(''))
+
+Execute(project with level set to 3):
+ call ale#test#SetFilename('phpstan-test-files/foo/test.php')
+ let g:ale_php_phpstan_level = 3
+
+ AssertEqual
+ \ ale#Escape('phpstan') . ' analyze -l3 --errorFormat raw %s',
+ \ ale_linters#php#phpstan#GetCommand(bufnr(''))
diff --git a/test/test_phpstan_executable_detection.vader b/test/handler/test_phpstan_handler.vader
index 24ba8cd8..207a7758 100644
--- a/test/test_phpstan_executable_detection.vader
+++ b/test/handler/test_phpstan_handler.vader
@@ -1,9 +1,4 @@
Before:
- Save g:ale_php_phpstan_executable
- Save g:ale_php_phpstan_level
-
- let g:ale_php_phpstan_executable = 'phpstan_test'
-
call ale#test#SetDirectory('/testplugin/test')
runtime ale_linters/php/phpstan.vim
@@ -14,45 +9,14 @@ After:
call ale#test#RestoreDirectory()
call ale#linter#Reset()
-Execute(project with level set to 3):
- call ale#test#SetFilename('phpstan-test-files/foo/test.php')
- let g:ale_php_phpstan_level = 3
-
- AssertEqual
- \ 'phpstan_test analyze -l3 --errorFormat raw %s',
- \ ale_linters#php#phpstan#GetCommand(bufnr(''))
-
-Execute(project with default level):
- call ale#test#SetFilename('phpstan-test-files/foo/test.php')
-
- AssertEqual
- \ 'phpstan_test analyze -l4 --errorFormat raw %s',
- \ ale_linters#php#phpstan#GetCommand(bufnr(''))
-
-Execute(parse output without errors):
+Execute(Output without errors should be parsed correctly):
call ale#test#SetFilename('phpstan-test-files/foo/test.php')
AssertEqual
\ [],
\ ale_linters#php#phpstan#Handle(bufnr(''), [" 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%"])
-Execute(parse output with one error):
- call ale#test#SetFilename('phpstan-test-files/foo/test.php')
-
- AssertEqual
- \ [
- \ {
- \ 'lnum': 9,
- \ 'text': 'Access to an undefined property Test::$var.',
- \ 'type': 'W'
- \ }
- \ ],
- \ ale_linters#php#phpstan#Handle(bufnr(''), [
- \ ' 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%',
- \ 'phpstan-test-files/foo/test.php:9:Access to an undefined property Test::$var.',
- \])
-
-Execute(parse output with three errors):
+Execute(Output with some errors should be parsed correctly):
call ale#test#SetFilename('phpstan-test-files/foo/test.php')
AssertEqual
@@ -80,7 +44,7 @@ Execute(parse output with three errors):
\ 'phpstan-test-files/foo/test.php:192:Invalid command testCommand.',
\])
-Execute(parse output for windows filesystem):
+Execute(Output should be parsed correctly with Windows paths):
call ale#test#SetFilename('phpstan-test-files/foo/test.php')
AssertEqual
@@ -96,7 +60,7 @@ Execute(parse output for windows filesystem):
\ 'D:\phpstan-test-files\foo\test.php:9:Access to an undefined property Test::$var.',
\])
-Execute(parse output for not php file):
+Execute(Output for .inc files should be parsed correctly):
call ale#test#SetFilename('phpstan-test-files/test.inc')
AssertEqual