1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
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:parent_dir = tempname()
let g:dir = ale#path#Simplify(g:parent_dir . '/src')
call mkdir(g:parent_dir, '', 0750)
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(The local phpstan executable should be used):
call mkdir('vendor/bin', 'p', 0750)
call writefile([''], 'vendor/bin/phpstan')
call ale#test#SetFilename('phpstan-test-files/foo/test.php')
let g:executable = ale#path#Simplify(g:dir . '/vendor/bin/phpstan')
AssertLinter g:executable,
\ ale#Escape(g:executable) . ' analyze --no-progress --errorFormat json -l ' . ale#Escape('4') . ' %s'
AssertLinterCwd v:null
Execute(use_global should override local executable detection):
let g:ale_php_phpstan_use_global = 1
call mkdir('vendor/bin', 'p', 0750)
call writefile([''], 'vendor/bin/phpstan')
call ale#test#SetFilename('phpstan-test-files/foo/test.php')
AssertLinter 'phpstan',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json -l ' . ale#Escape('4') . ' %s'
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'
\ ]
AssertLinterCwd g:dir
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 json %s'
\ ]
AssertLinterCwd g:dir
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'
Execute(Memory limit parameter is added to the command):
let g:ale_php_phpstan_memory_limit = '500M'
AssertLinter 'phpstan',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json -l ' . ale#Escape('4') . ' --memory-limit=' . ale#Escape('500M') . ' %s'
Execute(Directory is changed to that of the configuration file):
call writefile([], '../phpstan.neon')
AssertLinterCwd g:parent_dir
AssertLinter 'phpstan',
\ ale#Escape('phpstan') . ' analyze --no-progress --errorFormat json %s'
|