81c73da3b9
A new function is added here which will later be modified for public use in linter and fixer callbacks. All linting and fixing now goes through this new function, to prove that it works in all cases.
74 lines
1.8 KiB
Plaintext
74 lines
1.8 KiB
Plaintext
Before:
|
|
Save &shell, g:ale_run_synchronously
|
|
let g:ale_run_synchronously = 1
|
|
unlet! g:ale_run_synchronously_callbacks
|
|
|
|
if !has('win32')
|
|
set shell=/bin/sh
|
|
endif
|
|
|
|
let g:linter_output = []
|
|
let g:first_echo_called = 0
|
|
let g:second_echo_called = 0
|
|
let g:final_callback_called = 0
|
|
|
|
function! CollectResults(buffer, output)
|
|
let g:final_callback_called = 1
|
|
let g:linter_output = map(copy(a:output), 'join(split(v:val))')
|
|
return []
|
|
endfunction
|
|
function! RunFirstEcho(buffer)
|
|
let g:first_echo_called = 1
|
|
|
|
return 'echo foo'
|
|
endfunction
|
|
function! RunSecondEcho(buffer, output)
|
|
let g:second_echo_called = 1
|
|
|
|
return 'echo bar'
|
|
endfunction
|
|
|
|
call ale#linter#Define('foobar', {
|
|
\ 'name': 'testlinter',
|
|
\ 'callback': 'CollectResults',
|
|
\ 'executable': has('win32') ? 'cmd' : 'echo',
|
|
\ 'command_chain': [
|
|
\ {
|
|
\ 'callback': 'RunFirstEcho',
|
|
\ 'output_stream': 'stdout',
|
|
\ 'read_buffer': 0,
|
|
\ },
|
|
\ {
|
|
\ 'callback': 'RunSecondEcho',
|
|
\ 'output_stream': 'stdout',
|
|
\ 'read_buffer': 0,
|
|
\ },
|
|
\ ],
|
|
\})
|
|
|
|
After:
|
|
Restore
|
|
unlet! g:ale_run_synchronously_callbacks
|
|
unlet! g:first_echo_called
|
|
unlet! g:second_echo_called
|
|
unlet! g:final_callback_called
|
|
unlet! g:linter_output
|
|
let g:ale_buffer_info = {}
|
|
call ale#linter#Reset()
|
|
delfunction CollectResults
|
|
delfunction RunFirstEcho
|
|
delfunction RunSecondEcho
|
|
|
|
Given foobar (Some imaginary filetype):
|
|
anything
|
|
|
|
Execute(Check the results of running the chain):
|
|
AssertEqual 'foobar', &filetype
|
|
call ale#Queue(0)
|
|
call ale#test#FlushJobs()
|
|
|
|
Assert g:first_echo_called, 'The first chain item was not called'
|
|
Assert g:second_echo_called, 'The second chain item was not called'
|
|
Assert g:final_callback_called, 'The final callback was not called'
|
|
AssertEqual ['bar'], g:linter_output
|