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_executable = get(g:, 'ale_php_phpstan_executable', 'phpstan') | ||||||
| let g:ale_php_phpstan_level = get(g:, 'ale_php_phpstan_level', '4') | 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') |     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' |     \   . ' analyze -l' | ||||||
|     \   . ale#Var(a:buffer, 'php_phpstan_level') |     \   . ale#Var(a:buffer, 'php_phpstan_level') | ||||||
|     \   . ' --errorFormat raw' |     \   . ' --errorFormat raw' | ||||||
| @ -34,7 +40,7 @@ endfunction | |||||||
| 
 | 
 | ||||||
| call ale#linter#Define('php', { | call ale#linter#Define('php', { | ||||||
| \   'name': 'phpstan', | \   'name': 'phpstan', | ||||||
| \   'executable': 'phpstan', | \   'executable_callback': 'ale_linters#php#phpstan#GetExecutable', | ||||||
| \   'command_callback': 'ale_linters#php#phpstan#GetCommand', | \   'command_callback': 'ale_linters#php#phpstan#GetCommand', | ||||||
| \   'callback': 'ale_linters#php#phpstan#Handle', | \   '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: | 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') |   call ale#test#SetDirectory('/testplugin/test') | ||||||
| 
 | 
 | ||||||
|   runtime ale_linters/php/phpstan.vim |   runtime ale_linters/php/phpstan.vim | ||||||
| @ -14,45 +9,14 @@ After: | |||||||
|   call ale#test#RestoreDirectory() |   call ale#test#RestoreDirectory() | ||||||
|   call ale#linter#Reset() |   call ale#linter#Reset() | ||||||
| 
 | 
 | ||||||
| Execute(project with level set to 3): | Execute(Output without errors should be parsed correctly): | ||||||
|   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): |  | ||||||
|   call ale#test#SetFilename('phpstan-test-files/foo/test.php') |   call ale#test#SetFilename('phpstan-test-files/foo/test.php') | ||||||
| 
 | 
 | ||||||
|   AssertEqual |   AssertEqual | ||||||
|   \ [], |   \ [], | ||||||
|   \ ale_linters#php#phpstan#Handle(bufnr(''), [" 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%"]) |   \ ale_linters#php#phpstan#Handle(bufnr(''), [" 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%"]) | ||||||
| 
 | 
 | ||||||
| Execute(parse output with one error): | Execute(Output with some errors should be parsed correctly): | ||||||
|   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): |  | ||||||
|   call ale#test#SetFilename('phpstan-test-files/foo/test.php') |   call ale#test#SetFilename('phpstan-test-files/foo/test.php') | ||||||
| 
 | 
 | ||||||
|   AssertEqual |   AssertEqual | ||||||
| @ -80,7 +44,7 @@ Execute(parse output with three errors): | |||||||
|   \   'phpstan-test-files/foo/test.php:192:Invalid command testCommand.', |   \   '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') |   call ale#test#SetFilename('phpstan-test-files/foo/test.php') | ||||||
| 
 | 
 | ||||||
|   AssertEqual |   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.', |   \   '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') |   call ale#test#SetFilename('phpstan-test-files/test.inc') | ||||||
| 
 | 
 | ||||||
|   AssertEqual |   AssertEqual | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 w0rp
						w0rp