ale/test/test_checkingbuffer_autocmd.vader
Chris Marchesi 11780e1d3d
Add some tests for IsCheckingBuffer
Adding a couple of tests to demonstrate how IsCheckingBuffer behaves
during specific autocommand hooks:

* At ALELintPre, no linters have actually executed yet, hence
IsCheckingBuffer should be returning false.
* ALEJobStarted, fires as early as reasonably possible after a job has
successfully started, and hence hooking into IsCheckingBuffer here
should return true.

This distinction is important when using these two events during things
like statusline refreshes, namely for "linter running" indicators.
2018-04-28 14:50:20 -07:00

58 lines
1.2 KiB
Plaintext

Given testft (An empty file):
Before:
Save g:ale_run_synchronously
Save g:ale_buffer_info
let g:ale_run_synchronously = 1
let g:ale_buffer_info = {}
let g:checking_buffer = 0
unlet! b:ale_linted
function! TestCallback(buffer, output)
return []
endfunction
call ale#linter#Define('testft', {
\ 'name': 'testlinter',
\ 'callback': 'TestCallback',
\ 'executable': has('win32') ? 'cmd' : 'true',
\ 'command': 'true',
\})
After:
Restore
unlet! g:checking_buffer
delfunction TestCallback
call ale#linter#Reset()
augroup VaderTest
autocmd!
augroup end
augroup! VaderTest
Execute(ALELintPre should not return success on ale#engine#IsCheckingBuffer):
augroup VaderTest
autocmd!
autocmd User ALELintPre let g:checking_buffer = ale#engine#IsCheckingBuffer(bufnr('')) ? 1 : 0
augroup end
call ale#Lint()
AssertEqual g:checking_buffer, 0
Execute(ALEJobStarted should return success on ale#engine#IsCheckingBuffer):
augroup VaderTest
autocmd!
autocmd User ALEJobStarted let g:checking_buffer = ale#engine#IsCheckingBuffer(bufnr('')) ? 1 : 0
augroup end
call ale#Lint()
AssertEqual g:checking_buffer, 1