aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/vim_spec.lua
diff options
context:
space:
mode:
authorJP <17429390+resolritter@users.noreply.github.com>2022-07-18 22:11:13 -0300
committerGitHub <noreply@github.com>2022-07-19 09:11:13 +0800
commit1a655b71a888a2be86ff7d1ff534eac32fc83620 (patch)
tree417f69cf2721babbf6bc82e28b2a9f6af540c0bd /test/functional/lua/vim_spec.lua
parenta80d447b47c22985a467ce9d2aaf214e966ca642 (diff)
downloadrneovim-1a655b71a888a2be86ff7d1ff534eac32fc83620.tar.gz
rneovim-1a655b71a888a2be86ff7d1ff534eac32fc83620.tar.bz2
rneovim-1a655b71a888a2be86ff7d1ff534eac32fc83620.zip
fix(lua): make it possible to cancel vim.wait() with Ctrl-C (#19217)
Diffstat (limited to 'test/functional/lua/vim_spec.lua')
-rw-r--r--test/functional/lua/vim_spec.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua
index 883e0e373b..e2347c3c11 100644
--- a/test/functional/lua/vim_spec.lua
+++ b/test/functional/lua/vim_spec.lua
@@ -2493,6 +2493,41 @@ describe('lua stdlib', function()
eq(false, pcall_result)
end)
+
+ describe('returns -2 when interrupted', function()
+ before_each(function()
+ local channel = meths.get_api_info()[1]
+ meths.set_var('channel', channel)
+ end)
+
+ it('without callback', function()
+ exec_lua([[
+ function _G.Wait()
+ vim.rpcnotify(vim.g.channel, 'ready')
+ local _, interrupted = vim.wait(4000)
+ vim.rpcnotify(vim.g.channel, 'wait', interrupted)
+ end
+ ]])
+ feed(':lua _G.Wait()<CR>')
+ eq({'notification', 'ready', {}}, next_msg(500))
+ feed('<C-C>')
+ eq({'notification', 'wait', {-2}}, next_msg(500))
+ end)
+
+ it('with callback', function()
+ exec_lua([[
+ function _G.Wait()
+ vim.rpcnotify(vim.g.channel, 'ready')
+ local _, interrupted = vim.wait(4000, function() end)
+ vim.rpcnotify(vim.g.channel, 'wait', interrupted)
+ end
+ ]])
+ feed(':lua _G.Wait()<CR>')
+ eq({'notification', 'ready', {}}, next_msg(500))
+ feed('<C-C>')
+ eq({'notification', 'wait', {-2}}, next_msg(500))
+ end)
+ end)
end)
it('vim.notify_once', function()