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

69 lines
1.6 KiB
Plaintext

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()