Files
ale/test/linter/test_phpstan.vader
Grégoire Paris 2a5a7baffc Add support for multiline messages (#3686)
This is achieved by switching to JSON, which makes it much easier to
avoid confusion between an error message and the next one. It also
spares us from having to deal with regular expressions, and eliminates
some edge cases that no longer need to be tested.
2021-07-09 23:59:36 +09:00

96 lines
3.5 KiB
Plaintext

Before:
call ale#assert#SetUpLinterTest('php', 'phpstan')
let g:old_dir = g:dir
" Create a temporary directory and work within it, otherwise these tests
" cannot be run in parallel.
let g:dir = tempname()
call mkdir(g:dir, '', 0750)
silent! execute 'cd ' . fnameescape(g:dir)
silent! noautocmd execute 'file ' . fnameescape(ale#path#Simplify(g:dir . '/test.php'))
call delete('./phpstan.neon')
GivenCommandOutput ['0.10.2']
After:
silent! execute 'cd ' . fnameescape(g:old_dir)
call delete(g:dir, 'rf')
let g:dir = g:old_dir
unlet! g:old_dir
call ale#assert#TearDownLinterTest()
Execute(Custom executables should be used for the executable and command):
let g:ale_php_phpstan_executable = 'phpstan_test'
AssertLinter 'phpstan_test',
\ ale#Escape('phpstan_test') . ' analyze --no-progress --errorFormat json -l ' . ale#Escape('4') . ' %s'
Execute(project with level set to 3):
call ale#test#SetFilename('phpstan-test-files/foo/test.php')
let g:ale_php_phpstan_level = 3
AssertLinter 'phpstan',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json -l ' . ale#Escape('3') . ' %s'
Execute(Custom phpstan configuration file):
let g:ale_php_phpstan_configuration = 'phpstan_config'
AssertLinter 'phpstan',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json -c ' . ale#Escape('phpstan_config') . ' -l ' . ale#Escape('4') . ' %s'
Execute(Choose the right format for error format param):
GivenCommandOutput ['0.10.3']
AssertLinter 'phpstan', [
\ ale#Escape('phpstan') . ' --version',
\ ale#Escape('phpstan') . ' analyze --no-progress --error-format json -l ' . ale#Escape('4') . ' %s'
\ ]
Execute(Configuration file exists in current directory):
call writefile(['parameters:', ' level: 7'], './phpstan.neon')
let g:ale_php_phpstan_level = ''
let g:ale_php_phpstan_configuration = ''
AssertLinter 'phpstan', [
\ ale#Escape('phpstan') . ' --version',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json %s'
\ ]
Execute(Configuration dist file exists in current directory):
call writefile(['parameters:', ' level: 7'], './phpstan.neon.dist')
let g:ale_php_phpstan_level = ''
let g:ale_php_phpstan_configuration = ''
AssertLinter 'phpstan', [
\ ale#Escape('phpstan') . ' --version',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat raw %s'
\ ]
Execute(Configuration file exists in current directory, but force phpstan level):
call writefile(['parameters:', ' level: 7'], './phpstan.neon')
let g:ale_php_phpstan_configuration = ''
let g:ale_php_phpstan_level = '7'
AssertLinter 'phpstan', [
\ ale#Escape('phpstan') . ' --version',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json -l ' . ale#Escape('7') . ' %s'
\ ]
Execute(Configuration file exists in current directory, but force phpstan configuration):
call writefile(['parameters:', ' level: 7'], './phpstan.neon')
let g:ale_php_phpstan_level = ''
let g:ale_php_phpstan_configuration = 'phpstan.custom.neon'
AssertLinter 'phpstan', [
\ ale#Escape('phpstan') . ' --version',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json -c ' . ale#Escape('phpstan.custom.neon') . ' %s'
\ ]
Execute(Autoload parameter is added to the command):
let g:ale_php_phpstan_autoload = 'autoload.php'
AssertLinter 'phpstan',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json -a ' . ale#Escape('autoload.php') . ' -l ' . ale#Escape('4') . ' %s'