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.
94 lines
2 KiB
Text
94 lines
2 KiB
Text
Before:
|
|
Save g:ale_echo_cursor
|
|
Save g:ale_set_highlights
|
|
Save g:ale_set_loclist
|
|
Save g:ale_set_quickfix
|
|
Save g:ale_set_signs
|
|
Save g:ale_run_synchronously
|
|
Save g:ale_set_lists_synchronously
|
|
Save g:ale_buffer_info
|
|
|
|
" We want to check that sign IDs are set for this test.
|
|
let g:ale_set_signs = 1
|
|
let g:ale_set_loclist = 1
|
|
" Disable features we don't need for these tests.
|
|
let g:ale_set_quickfix = 0
|
|
let g:ale_set_highlights = 0
|
|
let g:ale_echo_cursor = 0
|
|
|
|
let g:ale_run_synchronously = 1
|
|
let g:ale_set_lists_synchronously = 1
|
|
let g:ale_buffer_info = {}
|
|
|
|
function! TestCallback(buffer, output)
|
|
return [
|
|
\ {
|
|
\ 'lnum': 1,
|
|
\ 'type': 'W',
|
|
\ 'col': 10,
|
|
\ 'text': 'Infix operators must be spaced. [Warning/space-infix-ops]',
|
|
\ },
|
|
\ {
|
|
\ 'lnum': 2,
|
|
\ 'type': 'E',
|
|
\ 'col': 10,
|
|
\ 'text': 'Missing semicolon. [Error/semi]',
|
|
\ }
|
|
\]
|
|
endfunction
|
|
|
|
call ale#linter#Define('foobar', {
|
|
\ 'name': 'testlinter',
|
|
\ 'callback': 'TestCallback',
|
|
\ 'executable': has('win32') ? 'cmd': 'true',
|
|
\ 'command': 'true',
|
|
\ 'read_buffer': 0,
|
|
\})
|
|
|
|
sign unplace *
|
|
|
|
call ale#engine#Cleanup(bufnr(''))
|
|
|
|
After:
|
|
Restore
|
|
|
|
delfunction TestCallback
|
|
|
|
call ale#linter#Reset()
|
|
|
|
sign unplace *
|
|
|
|
Given foobar (Some JavaScript with problems):
|
|
var y = 3+3;
|
|
var y = 3
|
|
|
|
Execute(The loclist should be updated after linting is done):
|
|
ALELint
|
|
call ale#test#FlushJobs()
|
|
|
|
AssertEqual
|
|
\ [
|
|
\ {
|
|
\ 'lnum': 1,
|
|
\ 'bufnr': bufnr('%'),
|
|
\ 'vcol': 0,
|
|
\ 'linter_name': 'testlinter',
|
|
\ 'nr': -1,
|
|
\ 'type': 'W',
|
|
\ 'col': 10,
|
|
\ 'text': 'Infix operators must be spaced. [Warning/space-infix-ops]',
|
|
\ 'sign_id': 1000001,
|
|
\ },
|
|
\ {
|
|
\ 'lnum': 2,
|
|
\ 'bufnr': bufnr('%'),
|
|
\ 'vcol': 0,
|
|
\ 'linter_name': 'testlinter',
|
|
\ 'nr': -1,
|
|
\ 'type': 'E',
|
|
\ 'col': 10,
|
|
\ 'text': 'Missing semicolon. [Error/semi]',
|
|
\ 'sign_id': 1000002,
|
|
\ }
|
|
\ ],
|
|
\ get(get(g:ale_buffer_info, bufnr('%'), {}), 'loclist', [])
|