ale/test/test_nvim_api_highlight.vader
2019-05-01 19:35:15 +01:00

161 lines
4.4 KiB
Plaintext

Before:
Save g:ale_enabled
Save g:ale_set_signs
let g:nvim_buf_clear_namespace_calls = []
let g:nvim_buf_add_highlight_calls = []
call ale#test#SetDirectory('/testplugin/test/highlight')
call ale#test#SetFilename('dummy.txt')
runtime autoload/ale/highlight.vim
let g:ale_set_signs = 1
let g:ale_enabled = 1
let b:ale_nvim_highlight_id = 42
let b:ale_highlight_items = []
function! ale#highlight#nvim_buf_clear_namespace(...) abort
call add(g:nvim_buf_clear_namespace_calls, a:000)
endfunction
function! ale#highlight#nvim_buf_add_highlight(...) abort
call add(g:nvim_buf_add_highlight_calls, a:000)
return 42 " returns namespace id
endfunction
After:
Restore
unlet! b:ale_enabled
unlet! b:ale_nvim_highlight_id
unlet! b:ale_highlight_items
unlet! g:nvim_buf_clear_namespace_calls
unlet! g:nvim_buf_add_highlight_calls
call ale#test#RestoreDirectory()
call ale#linter#Reset()
runtime autoload/ale/highlight.vim
Given foobar (Some imaginary filetype):
<contents>
Execute(Check usage of nvim_buf_clear_namespace):
if ale#highlight#HasNeovimApi()
call ale#highlight#SetHighlights(bufnr(''), [])
AssertEqual 1, len(g:nvim_buf_clear_namespace_calls)
AssertEqual
\ [[bufnr(''), 42, 0, -1]],
\ g:nvim_buf_clear_namespace_calls
endif
Execute(Check usage of nvim_buf_add_highlight / single char):
if ale#highlight#HasNeovimApi()
call ale#highlight#SetHighlights(bufnr(''), [
\ {
\ 'bufnr': bufnr(''),
\ 'type': 'E',
\ 'lnum': 2,
\ 'col': 4,
\ }
\])
" Highlights are cleared on update
AssertEqual 1, len(g:nvim_buf_clear_namespace_calls)
AssertEqual [[bufnr(''), 42, 0, -1]], g:nvim_buf_clear_namespace_calls
" Should highlight a single char by lnum, col
AssertEqual 1, len(g:nvim_buf_add_highlight_calls)
AssertEqual
\ [[bufnr(''), 42, 'ALEError', 1, 3, 4]],
\ g:nvim_buf_add_highlight_calls
endif
Execute(Check usage of nvim_buf_add_highlight / single line span):
if ale#highlight#HasNeovimApi()
call ale#highlight#SetHighlights(bufnr(''), [
\ {
\ 'bufnr': bufnr(''),
\ 'type': 'E',
\ 'lnum': 2,
\ 'col': 4,
\ 'end_lnum': 2,
\ 'end_col': 10,
\ }
\])
" Highlights are cleared on update
AssertEqual 1, len(g:nvim_buf_clear_namespace_calls)
AssertEqual [[bufnr(''), 42, 0, -1]], g:nvim_buf_clear_namespace_calls
" Should highlight a span between col and end_col on lnum
AssertEqual 1, len(g:nvim_buf_add_highlight_calls)
AssertEqual
\ [[bufnr(''), 42, 'ALEError', 1, 3, 10]],
\ g:nvim_buf_add_highlight_calls
endif
Execute(Check usage of nvim_buf_add_highlight / multiple lines span):
if ale#highlight#HasNeovimApi()
call ale#highlight#SetHighlights(bufnr(''), [
\ {
\ 'bufnr': bufnr(''),
\ 'type': 'E',
\ 'lnum': 2,
\ 'col': 4,
\ 'end_lnum': 5,
\ 'end_col': 10,
\ }
\])
" Highlights are cleared on update
AssertEqual 1, len(g:nvim_buf_clear_namespace_calls)
AssertEqual [[bufnr(''), 42, 0, -1]], g:nvim_buf_clear_namespace_calls
" Should highlight all lines from lnum till end_lnum
AssertEqual 4, len(g:nvim_buf_add_highlight_calls)
AssertEqual
\ [
\ [bufnr(''), 42, 'ALEError', 1, 3, -1],
\ [bufnr(''), 42, 'ALEError', 2, 0, -1],
\ [bufnr(''), 42, 'ALEError', 3, 0, -1],
\ [bufnr(''), 42, 'ALEError', 4, 0, 10]
\ ],
\ g:nvim_buf_add_highlight_calls
endif
Execute(Check usage of nvim_buf_add_highlight / line highights):
let g:ale_set_signs = 0
if ale#highlight#HasNeovimApi()
call ale#highlight#SetHighlights(bufnr(''), [
\ {
\ 'bufnr': bufnr(''),
\ 'type': 'E',
\ 'lnum': 2,
\ 'col': 4,
\ 'end_lnum': 5,
\ 'end_col': 10,
\ }
\])
" Highlights are cleared on update
AssertEqual 1, len(g:nvim_buf_clear_namespace_calls)
AssertEqual [[bufnr(''), 42, 0, -1]], g:nvim_buf_clear_namespace_calls
" Now the last highlight should be put on the entire line
AssertEqual 5, len(g:nvim_buf_add_highlight_calls)
AssertEqual
\ [
\ [bufnr(''), 42, 'ALEError', 1, 3, -1],
\ [bufnr(''), 42, 'ALEError', 2, 0, -1],
\ [bufnr(''), 42, 'ALEError', 3, 0, -1],
\ [bufnr(''), 42, 'ALEError', 4, 0, 10],
\ [bufnr(''), 42, 'ALEErrorLine', 2, 0, -1]
\ ],
\ g:nvim_buf_add_highlight_calls
endif