mirror of
https://github.com/prabirshrestha/vim-lsp.git
synced 2025-12-24 12:14:32 +01:00
* impl lsp#get_progress() for statusline plugin. * add workDoneProgress spec link * refactor s:handle_work_done_progress() * [workDoneProgress] prevent to subscribe multiple times * [workDoneProgress] Fixed s:lsp_progress['percentage'] to always be float * [workDoneProgress] support multiple progress registration. * [workDoneProgress] Fixed s:lsp_progress['percentage'] to uinteger * [workDoneProgress] fix for vint * [workDoneProgress] rename variable * [workDoneProgress] add test * [workDoneProgress] write document * [workDoneProgress] initialize s:progress_ui when enable/disable * [workDoneProgress] refactor test code * [workDoneProgress] add lsp_progress_updated * [workDoneProgress] fix typo * [workDoneProgress] refactor token handling * [workDoneProgress] Fixed differences from specifications(messages->message) * [workDoneProgress] fix test
93 lines
5.9 KiB
VimL
93 lines
5.9 KiB
VimL
Describe lsp#internal#work_done_progress
|
|
Before each
|
|
let g:lsp_work_done_progress_enabled = 1
|
|
call lsp#internal#work_done_progress#_enable()
|
|
End
|
|
|
|
After each
|
|
let g:lsp_work_done_progress_enabled = 0
|
|
call lsp#internal#work_done_progress#_disable()
|
|
End
|
|
|
|
It should be able to subscribe to $progress stream
|
|
let l:server1_response1 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'begin', 'title':'title'}}}
|
|
let l:server1_response2 = {'method': '$/progress', 'params':{'token':'token text','value':{'percentage':50,'message':'test message','kind':'report'}}}
|
|
let l:server1_response3 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'end'}}}
|
|
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': '', 'token': 'token text', 'title': 'title', 'server': 'server1'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': 'test message', 'token': 'token text', 'percentage': 50, 'title': 'title', 'server': 'server1'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response3 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
|
|
End
|
|
|
|
It should be able to subscribe to multi $progress stream
|
|
let l:server1_response1 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'begin', 'title':'title1'}}}
|
|
let l:server1_response2 = {'method': '$/progress', 'params':{'token':'token text','value':{'percentage':50,'message':'msg1','kind':'report'}}}
|
|
let l:server1_response3 = {'method': '$/progress', 'params':{'token':'token text','value':{'percentage':90,'message':'msg1','kind':'report'}}}
|
|
let l:server1_response4 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'end'}}}
|
|
let l:server2_response1 = {'method': '$/progress', 'params':{'token':'server2_token','value':{'kind':'begin', 'title':'title2'}}}
|
|
let l:server2_response2 = {'method': '$/progress', 'params':{'token':'server2_token','value':{'percentage':0,'message':'msg2','kind':'report'}}}
|
|
let l:server2_response3 = {'method': '$/progress', 'params':{'token':'server2_token','value':{'kind':'end'}}}
|
|
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': '', 'token': 'token text', 'title': 'title1', 'server': 'server1'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response1 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': '', 'token': 'server2_token', 'title': 'title2', 'server': 'server2'},
|
|
\ {'message': '', 'token': 'token text', 'title': 'title1', 'server': 'server1'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response2 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'},
|
|
\ {'message': '', 'token': 'token text', 'title': 'title1', 'server': 'server1'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': 'msg1', 'token': 'token text', 'percentage':50, 'title': 'title1', 'server': 'server1'},
|
|
\ {'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response3 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': 'msg1', 'token': 'token text', 'percentage':90, 'title': 'title1', 'server': 'server1'},
|
|
\ {'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response4 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response3 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
|
|
End
|
|
|
|
It should be returned correctly even if percentage and message do not exist.
|
|
let l:server1_response1 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'begin', 'title':'title'}}}
|
|
let l:server1_response2 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'report'}}}
|
|
let l:server1_response3 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'end'}}}
|
|
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': '', 'token': 'token text', 'title': 'title', 'server': 'server1'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(),
|
|
\ [{'message': '', 'token': 'token text', 'title': 'title', 'server': 'server1'}])
|
|
|
|
call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response3 })
|
|
Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
|
|
End
|
|
End
|