ale/test/test_lint_on_enter_when_file_changed.vader
w0rp 81c73da3b9
#2132 - lint and fix with ale#command#Run
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.
2019-02-06 22:00:11 +00:00

85 lines
1.9 KiB
Plaintext

Before:
Save &filetype
Save g:ale_buffer_info
Save g:ale_lint_on_enter
Save g:ale_set_lists_synchronously
let g:buf = bufnr('')
let g:ale_lint_on_enter = 1
let g:ale_run_synchronously = 1
let g:ale_set_lists_synchronously = 1
function! TestCallback(buffer, output)
return [{
\ 'lnum': 1,
\ 'col': 3,
\ 'text': 'baz boz',
\}]
endfunction
call ale#linter#Define('foobar', {
\ 'name': 'testlinter',
\ 'callback': 'TestCallback',
\ 'executable': has('win32') ? 'cmd' : 'true',
\ 'command': has('win32') ? 'echo' : 'true',
\})
After:
Restore
unlet! g:buf
let g:ale_run_synchronously = 0
delfunction TestCallback
call ale#linter#Reset()
call setloclist(0, [])
Execute(The file changed event function should set b:ale_file_changed):
let g:ale_lint_on_enter = 0
if has('gui')
new
else
e test
endif
call ale#events#FileChangedEvent(g:buf)
close
" We should set the flag in the other buffer
AssertEqual 1, getbufvar(g:buf, 'ale_file_changed')
Execute(The file changed event function should lint the current buffer when it has changed):
set filetype=foobar
call ale#events#FileChangedEvent(bufnr(''))
call ale#test#FlushJobs()
AssertEqual [{
\ 'bufnr': bufnr(''),
\ 'lnum': 1,
\ 'vcol': 0,
\ 'col': 3,
\ 'text': 'baz boz',
\ 'type': 'E',
\ 'nr': -1,
\ 'pattern': '',
\ 'valid': 1,
\ }], ale#test#GetLoclistWithoutModule()
Execute(The buffer should be checked after entering it after the file has changed):
let b:ale_file_changed = 1
set filetype=foobar
call ale#events#ReadOrEnterEvent(bufnr(''))
call ale#test#FlushJobs()
AssertEqual [{
\ 'bufnr': bufnr(''),
\ 'lnum': 1,
\ 'vcol': 0,
\ 'col': 3,
\ 'text': 'baz boz',
\ 'type': 'E',
\ 'nr': -1,
\ 'pattern': '',
\ 'valid': 1,
\ }], ale#test#GetLoclistWithoutModule()