Fix #864 - Use the user's configured executable for phpstan for executable() checks
This commit is contained in:
		
							parent
							
								
									cc02eb8a5a
								
							
						
					
					
						commit
						a3299bf03a
					
				| @ -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', | ||||
| \}) | ||||
|  | ||||
							
								
								
									
										29
									
								
								test/command_callback/test_phpstan_command_callbacks.vader
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								test/command_callback/test_phpstan_command_callbacks.vader
									
									
									
									
									
										Normal file
									
								
							| @ -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('')) | ||||
| @ -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 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 w0rp
						w0rp