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