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.
68 lines
1.6 KiB
Text
68 lines
1.6 KiB
Text
Given foobar (Some imaginary filetype):
|
|
var y = 3+3;
|
|
var y = 3
|
|
|
|
Before:
|
|
Save g:ale_buffer_info
|
|
Save g:ale_echo_cursor
|
|
Save g:ale_run_synchronously
|
|
Save g:ale_set_highlights
|
|
Save g:ale_set_loclist
|
|
Save g:ale_set_quickfix
|
|
Save g:ale_set_signs
|
|
|
|
let g:ale_buffer_info = {}
|
|
let g:ale_run_synchronously = 1
|
|
let g:ale_set_signs = 1
|
|
" Disable features we don't need for these tests.
|
|
let g:ale_set_quickfix = 0
|
|
let g:ale_set_loclist = 0
|
|
let g:ale_set_highlights = 0
|
|
let g:ale_echo_cursor = 0
|
|
|
|
sign unplace *
|
|
|
|
function! TestCallback(buffer, output)
|
|
return [
|
|
\ {'lnum': 1, 'text': 'foo', 'type': 'W'},
|
|
\ {'lnum': 2, 'text': 'foo', 'type': 'E'},
|
|
\]
|
|
endfunction
|
|
|
|
function! CollectSigns()
|
|
redir => l:output
|
|
silent exec 'sign place'
|
|
redir END
|
|
|
|
let l:actual_sign_list = []
|
|
|
|
for l:line in split(l:output, "\n")
|
|
let l:match = matchlist(l:line, '\v^.*\=(\d+).*\=\d+.*\=(ALE[a-zA-Z]+Sign)')
|
|
|
|
if len(l:match) > 0
|
|
call add(l:actual_sign_list, [l:match[1], l:match[2]])
|
|
endif
|
|
endfor
|
|
|
|
return l:actual_sign_list
|
|
endfunction
|
|
|
|
call ale#linter#Define('foobar', {
|
|
\ 'name': 'testlinter',
|
|
\ 'callback': 'TestCallback',
|
|
\ 'executable': has('win32') ? 'cmd' : 'echo',
|
|
\ 'command': has('win32') ? 'echo foo bar' : '/bin/sh -c ''echo foo bar''',
|
|
\})
|
|
|
|
After:
|
|
delfunction TestCallback
|
|
delfunction CollectSigns
|
|
|
|
sign unplace *
|
|
call ale#linter#Reset()
|
|
|
|
Execute(The signs should be updated after linting is done):
|
|
ALELint
|
|
call ale#test#FlushJobs()
|
|
|
|
AssertEqual [['1', 'ALEWarningSign'], ['2', 'ALEErrorSign']], CollectSigns()
|