ale/test/test_lint_on_filetype_chang...

75 lines
1.9 KiB
Plaintext

Before:
Save &filetype
let g:queue_calls = []
unlet! b:ale_lint_on_enter
function! ale#Queue(...)
call add(g:queue_calls, a:000)
endfunction
After:
Restore
unlet! b:ale_lint_on_enter
unlet! g:queue_calls
" Reload the ALE code to load the real function again.
runtime autoload/ale.vim
unlet! b:ale_original_filetype
Execute(The original filetype should be set on BufEnter):
let &filetype = 'foobar'
call ale#events#EnterEvent(bufnr(''))
AssertEqual 'foobar', b:ale_original_filetype
let &filetype = 'bazboz'
call ale#events#EnterEvent(bufnr(''))
AssertEqual 'bazboz', b:ale_original_filetype
Execute(Linting should not be queued when the filetype is the same):
let b:ale_original_filetype = 'foobar'
let g:queue_calls = []
call ale#events#FileTypeEvent(bufnr(''), 'foobar')
AssertEqual [], g:queue_calls
Execute(Linting should be queued when the filetype changes):
let b:ale_original_filetype = 'foobar'
let g:queue_calls = []
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual [[300, 'lint_file', bufnr('')]], g:queue_calls
Execute(Linting shouldn't be done when the original filetype was blank and linting on enter is off):
let b:ale_lint_on_enter = 0
let b:ale_original_filetype = ''
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual [], g:queue_calls
Execute(Linting should be done when the original filetype was blank and linting on enter is on):
let b:ale_lint_on_enter = 1
let b:ale_original_filetype = ''
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual [[300, 'lint_file', bufnr('')]], g:queue_calls
Execute(The new filetype should become the "original" one if the original was blank and linting on enter is off):
let b:ale_lint_on_enter = 0
let b:ale_original_filetype = ''
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual 'bazboz', b:ale_original_filetype