mirror of
https://github.com/dense-analysis/ale
synced 2024-12-18 20:35:29 +00:00
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.
78 lines
1.5 KiB
Plaintext
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()
|