diff options
author | JP <17429390+resolritter@users.noreply.github.com> | 2022-07-18 22:11:13 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-19 09:11:13 +0800 |
commit | 1a655b71a888a2be86ff7d1ff534eac32fc83620 (patch) | |
tree | 417f69cf2721babbf6bc82e28b2a9f6af540c0bd /test/functional/lua/vim_spec.lua | |
parent | a80d447b47c22985a467ce9d2aaf214e966ca642 (diff) | |
download | rneovim-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.lua | 35 |
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() |