aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/server_notifications_spec.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2020-12-15 10:15:51 +0100
committerBjörn Linse <bjorn.linse@gmail.com>2020-12-23 23:58:56 +0100
commit95352f490a24f5e3a1cc788d297105e4eadf1481 (patch)
treee1df3123527756ee6f67f80b81ce333618126bf5 /test/functional/api/server_notifications_spec.lua
parentd0668b36a3e2d0683059baead45bea27e2358e9c (diff)
downloadrneovim-95352f490a24f5e3a1cc788d297105e4eadf1481.tar.gz
rneovim-95352f490a24f5e3a1cc788d297105e4eadf1481.tar.bz2
rneovim-95352f490a24f5e3a1cc788d297105e4eadf1481.zip
rpc: don't handle stale requests on already closed channel
Diffstat (limited to 'test/functional/api/server_notifications_spec.lua')
-rw-r--r--test/functional/api/server_notifications_spec.lua16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/functional/api/server_notifications_spec.lua b/test/functional/api/server_notifications_spec.lua
index 29cd38ef0d..9ee2570798 100644
--- a/test/functional/api/server_notifications_spec.lua
+++ b/test/functional/api/server_notifications_spec.lua
@@ -3,6 +3,8 @@ local eq, clear, eval, command, nvim, next_msg =
helpers.eq, helpers.clear, helpers.eval, helpers.command, helpers.nvim,
helpers.next_msg
local meths = helpers.meths
+local exec_lua = helpers.exec_lua
+local retry = helpers.retry
describe('notify', function()
local channel
@@ -72,4 +74,18 @@ describe('notify', function()
nvim('unsubscribe', 'event1')
eq(2, eval('1+1')) -- Still alive?
end)
+
+ it('cancels stale events on channel close', function()
+ if helpers.pending_win32(pending) then return end
+ local catchan = eval("jobstart(['cat'], {'rpc': v:true})")
+ eq({id=catchan, stream='job', mode='rpc', client = {}}, exec_lua ([[
+ vim.rpcnotify(..., "nvim_call_function", 'chanclose', {..., 'rpc'})
+ vim.rpcnotify(..., "nvim_subscribe", "daily_rant")
+ return vim.api.nvim_get_chan_info(...)
+ ]], catchan))
+ eq(2, eval('1+1')) -- Still alive?
+ eq({false, 'Invalid channel: '..catchan},
+ exec_lua ([[ return {pcall(vim.rpcrequest, ..., 'nvim_eval', '1+1')}]], catchan))
+ retry(nil, 3000, function() eq({}, meths.get_chan_info(catchan)) end) -- cat be dead :(
+ end)
end)