mirror of
https://github.com/dense-analysis/ale
synced 2024-12-24 23:22: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.
95 lines
2.0 KiB
Plaintext
95 lines
2.0 KiB
Plaintext
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', [])
|