71 lines
3.9 KiB
Plaintext
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
|