ale/test/test_ale_lint_command.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

78 lines
1.5 KiB
Plaintext

Before:
Save g:ale_buffer_info
Save g:ale_enabled
let g:ale_buffer_info = {}
let g:ale_enabled = 1
let g:expected_loclist = [{
\ 'bufnr': bufnr('%'),
\ 'lnum': 2,
\ 'vcol': 0,
\ 'col': 3,
\ 'text': 'foo bar',
\ 'type': 'E',
\ 'nr': -1,
\ 'pattern': '',
\ 'valid': 1,
\}]
function! ToggleTestCallback(buffer, output)
return [{
\ 'bufnr': a:buffer,
\ 'lnum': 2,
\ 'vcol': 0,
\ 'col': 3,
\ 'text': join(split(a:output[0])),
\ 'type': 'E',
\ 'nr': -1,
\}]
endfunction
call ale#linter#Define('foobar', {
\ 'name': 'testlinter',
\ 'callback': 'ToggleTestCallback',
\ 'executable': has('win32') ? 'cmd' : 'echo',
\ 'command': 'echo foo bar',
\})
After:
Restore
unlet! g:expected_loclist
unlet! b:i
call ale#engine#Cleanup(bufnr(''))
call ale#linter#Reset()
let g:ale_buffer_info = {}
delfunction ToggleTestCallback
Given foobar (Some imaginary filetype):
foo
bar
baz
Execute(ALELint should run the linters):
AssertEqual 'foobar', &filetype
" Try to run the linter a few times, as it fails randomly in NeoVim.
for b:i in range(5)
ALELint
call ale#test#WaitForJobs(2000)
if !has('nvim')
" Sleep so the delayed list function can run.
" This breaks the tests in NeoVim for some reason.
sleep 1ms
endif
if ale#test#GetLoclistWithoutModule() == g:expected_loclist
break
endif
endfor
" Check the loclist
AssertEqual g:expected_loclist, ale#test#GetLoclistWithoutModule()