Files
dotfiles/dot_vim/plugged/vim-lsp/test/lsp/internal/diagnostics/state.vimspec

71 lines
3.9 KiB
Plaintext

Describe lsp#internal#diagnostics#state
Before
%bwipeout!
let g:lsp_diagnostics_enabled = 1
call lsp#internal#diagnostics#state#_disable()
call lsp#internal#diagnostics#state#_enable()
End
After all
%bwipeout!
let g:lsp_diagnostics_enabled = 0
call lsp#internal#diagnostics#state#_disable()
End
It should be able to subscribe to textDocument/publishDiagnostics stream and update state correctly
let l:uri = 'file://some/uri'
let l:server1_response1 = {'method': 'textDocument/publishDiagnostics', 'params': {'uri': l:uri, 'diagnostics': [
\ {'severity': 1, 'message': 'm1', 'range': { 'start': { 'line': 1, 'character': 1, 'end': { 'line': 1, 'character': 1 } } }},
\ {'severity': 1, 'message': 'm2', 'range': { 'start': { 'line': 1, 'character': 2, 'end': { 'line': 1, 'character': 3 } } }},
\ ]}}
let l:server2_response1 = {'method': 'textDocument/publishDiagnostics', 'params': {'uri': l:uri, 'diagnostics': [
\ {'severity': 1, 'message': 's2', 'range': { 'start': { 'line': 2, 'character': 3, 'end': { 'line': 4, 'character': 5 } } }},
\ ]}}
let l:server1_response2 = {'method': 'textDocument/publishDiagnostics', 'params': {'uri': l:uri, 'diagnostics': [
\ {'severity': 1, 'message': 'm2', 'range': { 'start': { 'line': 1, 'character': 2, 'end': { 'line': 1, 'character': 3 } } }},
\ ]}}
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), {})
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), { 'server1': l:server1_response1 })
let l:want = {}
let l:want[l:uri] = { 'server1': l:server1_response1 }
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response1 })
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), { 'server1': l:server1_response1, 'server2': l:server2_response1 })
let l:want = {}
let l:want[l:uri] = { 'server1': l:server1_response1, 'server2': l:server2_response1 }
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_server_for_uri(l:uri), { 'server1': l:server1_response2, 'server2': l:server2_response1 })
let l:want = {}
let l:want[l:uri] = { 'server1': l:server1_response2, 'server2': l:server2_response1 }
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
call lsp#stream(1, { 'server': '$vimlsp',
\ 'response': { 'method': '$/vimlsp/lsp_server_exit', 'params': { 'server': 'server1' } } })
let l:want = {}
let l:want[l:uri] = { 'server2': l:server2_response1 }
Assert Equals(lsp#internal#diagnostics#state#_get_all_diagnostics_grouped_by_uri_and_server(), l:want)
End
It should correctly return the state of buffer
call lsp#internal#diagnostics#state#_disable()
call lsp#internal#diagnostics#state#_enable()
let l:bufnr = bufnr('%')
Assert True(lsp#internal#diagnostics#state#_is_enabled_for_buffer(l:bufnr))
call lsp#internal#diagnostics#state#_disable_for_buffer(l:bufnr)
Assert False(lsp#internal#diagnostics#state#_is_enabled_for_buffer(l:bufnr))
call lsp#internal#diagnostics#state#_enable_for_buffer(l:bufnr)
Assert True(lsp#internal#diagnostics#state#_is_enabled_for_buffer(l:bufnr))
End
End