2017-03-21 14:52:02 +00:00
|
|
|
Before:
|
2017-04-30 09:09:26 +00:00
|
|
|
Save g:ale_run_synchronously
|
2017-07-31 21:36:30 +00:00
|
|
|
Save g:ale_buffer_info
|
|
|
|
Save g:ale_linters
|
|
|
|
|
|
|
|
let g:ale_buffer_info = {}
|
2017-04-30 09:09:26 +00:00
|
|
|
let g:ale_run_synchronously = 1
|
2017-07-31 21:36:30 +00:00
|
|
|
call ale#ResetLintFileMarkers()
|
2017-04-30 09:09:26 +00:00
|
|
|
|
2017-03-21 14:52:02 +00:00
|
|
|
let g:buffer_result = [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'buffer error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'buffer warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\]
|
|
|
|
|
|
|
|
function! LintFileCallback(buffer, output)
|
|
|
|
return [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\]
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! BufferCallback(buffer, output)
|
|
|
|
return deepcopy(g:buffer_result)
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! GetSimplerLoclist()
|
|
|
|
let l:loclist = []
|
|
|
|
|
|
|
|
for l:item in getloclist(0)
|
|
|
|
call add(l:loclist, {
|
|
|
|
\ 'lnum': l:item.lnum,
|
|
|
|
\ 'col': l:item.col,
|
|
|
|
\ 'text': l:item.text,
|
|
|
|
\ 'type': l:item.type,
|
|
|
|
\})
|
|
|
|
endfor
|
|
|
|
|
|
|
|
return l:loclist
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
call ale#linter#Define('foobar', {
|
|
|
|
\ 'name': 'lint_file_linter',
|
|
|
|
\ 'callback': 'LintFileCallback',
|
|
|
|
\ 'executable': 'echo',
|
|
|
|
\ 'command': 'echo',
|
|
|
|
\ 'lint_file': 1,
|
|
|
|
\})
|
|
|
|
|
|
|
|
call ale#linter#Define('foobar', {
|
|
|
|
\ 'name': 'buffer_linter',
|
|
|
|
\ 'callback': 'BufferCallback',
|
|
|
|
\ 'executable': 'echo',
|
|
|
|
\ 'command': 'echo',
|
|
|
|
\ 'read_buffer': 0,
|
|
|
|
\})
|
|
|
|
|
2017-07-07 22:47:41 +00:00
|
|
|
let g:filename = tempname()
|
|
|
|
call writefile([], g:filename)
|
|
|
|
call ale#test#SetFilename(g:filename)
|
|
|
|
|
2017-03-21 14:52:02 +00:00
|
|
|
After:
|
2017-04-30 09:09:26 +00:00
|
|
|
Restore
|
|
|
|
|
2017-03-21 14:52:02 +00:00
|
|
|
unlet g:buffer_result
|
|
|
|
let g:ale_buffer_info = {}
|
|
|
|
call ale#linter#Reset()
|
|
|
|
call setloclist(0, [])
|
|
|
|
delfunction LintFileCallback
|
|
|
|
delfunction BufferCallback
|
|
|
|
|
2017-07-07 22:47:41 +00:00
|
|
|
if filereadable(g:filename)
|
|
|
|
call delete(g:filename)
|
|
|
|
endif
|
|
|
|
|
|
|
|
unlet g:filename
|
|
|
|
|
2017-03-21 14:52:02 +00:00
|
|
|
Given foobar (Some imaginary filetype):
|
|
|
|
foo
|
|
|
|
bar
|
|
|
|
baz
|
|
|
|
|
|
|
|
Execute(Running linters without 'lint_file' should run only buffer linters):
|
|
|
|
call ale#Queue(0)
|
|
|
|
|
|
|
|
AssertEqual [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'buffer error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'buffer warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\], GetSimplerLoclist()
|
|
|
|
|
|
|
|
Execute(Running linters with 'lint_file' should run all linters):
|
2017-07-07 22:47:41 +00:00
|
|
|
Assert filereadable(expand('%:p')), 'The file was not readable'
|
|
|
|
|
2017-03-21 14:52:02 +00:00
|
|
|
call ale#Queue(0, 'lint_file')
|
|
|
|
|
|
|
|
AssertEqual [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'buffer error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'buffer warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\], GetSimplerLoclist()
|
|
|
|
|
|
|
|
Execute(Linter errors from files should be kept):
|
2017-07-07 22:47:41 +00:00
|
|
|
Assert filereadable(expand('%:p')), 'The file was not readable'
|
|
|
|
|
2017-03-21 14:52:02 +00:00
|
|
|
call ale#Queue(0, 'lint_file')
|
|
|
|
|
|
|
|
" Change the results for the buffer callback.
|
|
|
|
let g:buffer_result = [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'new buffer error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\]
|
|
|
|
|
|
|
|
call ale#Queue(0)
|
|
|
|
|
|
|
|
AssertEqual [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'text': 'new buffer error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\], GetSimplerLoclist()
|
2017-07-31 21:36:30 +00:00
|
|
|
|
|
|
|
Execute(Linter errors from files should be kept when no other linters are run):
|
|
|
|
let g:ale_linters = {'foobar': ['lint_file_linter']}
|
|
|
|
Assert filereadable(expand('%:p')), 'The file was not readable'
|
|
|
|
|
|
|
|
call ale#Queue(0, 'lint_file')
|
|
|
|
|
|
|
|
AssertEqual [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\], GetSimplerLoclist()
|
|
|
|
|
|
|
|
call ale#Queue(0)
|
|
|
|
|
|
|
|
AssertEqual [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file warning',
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 3,
|
|
|
|
\ 'text': 'file error',
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ },
|
|
|
|
\], GetSimplerLoclist()
|