34e409ea21
`lint_file` can now be computed dynamically with a callback function, which can return a deferred result, as per `ale#command#Run`. This allows linters to dynamically switch between checking files on disk, or checking code on the fly. Some tests have been fixed on Windows.
50 lines
1.3 KiB
Text
50 lines
1.3 KiB
Text
Before:
|
|
Save g:ale_run_synchronously
|
|
Save g:ale_emulate_job_failure
|
|
Save g:ale_buffer_info
|
|
|
|
let g:ale_run_synchronously = 1
|
|
let g:ale_buffer_info = {}
|
|
let b:ale_history = []
|
|
|
|
call ale#linter#Reset()
|
|
call ale#assert#SetUpLinterTestCommands()
|
|
call ale#linter#Define('foobar', {
|
|
\ 'name': 'lint_file_linter',
|
|
\ 'callback': 'LintFileCallback',
|
|
\ 'executable': has('win32') ? 'cmd' : 'echo',
|
|
\ 'command': {b -> ale#command#Run(b, 'echo', {-> ale#command#Run(b, 'echo', {-> 'foo'})})},
|
|
\ 'read_buffer': 0,
|
|
\})
|
|
|
|
" Run the test commands in the shell.
|
|
let g:ale_run_synchronously_emulate_commands = 0
|
|
|
|
After:
|
|
Restore
|
|
|
|
call ale#assert#TearDownLinterTest()
|
|
unlet! g:ale_run_synchronously_callbacks
|
|
|
|
Given foobar (Some imaginary filetype):
|
|
Execute(It should be possible to compute an executable to check based on the result of commands):
|
|
AssertLinter has('win32') ? 'cmd' : 'echo', 'foo'
|
|
|
|
ALELint
|
|
call ale#test#FlushJobs()
|
|
|
|
AssertEqual
|
|
\ 1,
|
|
\ len(filter(copy(b:ale_history), 'string(v:val.command) =~# ''foo'''))
|
|
|
|
Execute(It handle the deferred command failing):
|
|
let g:ale_emulate_job_failure = 1
|
|
|
|
AssertLinter has('win32') ? 'cmd' : 'echo', 0
|
|
|
|
ALELint
|
|
call ale#test#FlushJobs()
|
|
|
|
AssertEqual
|
|
\ 0,
|
|
\ len(filter(copy(b:ale_history), 'string(v:val.command) =~# ''foo'''))
|