aboutsummaryrefslogtreecommitdiff
path: root/test/functional
diff options
context:
space:
mode:
authorMarcos ALMEIDA <marcos.almeida@xcomponent.com>2018-09-29 20:40:53 +0200
committerJustin M. Keyes <justinkz@gmail.com>2020-01-18 17:06:03 -0800
commit757aad92e84709a08320a06870b6acb086bc6876 (patch)
tree9509b5c658c5169b56d298cfdbf82005bc774ac7 /test/functional
parentfb8b0503baf95ccd9ab4a30220dd08ca8b16736b (diff)
downloadrneovim-757aad92e84709a08320a06870b6acb086bc6876.tar.gz
rneovim-757aad92e84709a08320a06870b6acb086bc6876.tar.bz2
rneovim-757aad92e84709a08320a06870b6acb086bc6876.zip
autocmd: add WinClosed event
- only fire once, just before freeing mem - trigger when on a different buffer - avoid recursive calls in another tab
Diffstat (limited to 'test/functional')
-rw-r--r--test/functional/autocmd/autocmd_spec.lua66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/functional/autocmd/autocmd_spec.lua b/test/functional/autocmd/autocmd_spec.lua
index 43534c9e7e..31c6edb940 100644
--- a/test/functional/autocmd/autocmd_spec.lua
+++ b/test/functional/autocmd/autocmd_spec.lua
@@ -2,6 +2,7 @@ local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local dedent = helpers.dedent
+local neq = helpers.neq
local eq = helpers.eq
local eval = helpers.eval
local feed = helpers.feed
@@ -40,6 +41,71 @@ describe('autocmd', function()
assert.same(expected, eval('g:foo'))
end)
+ it(':close triggers WinClosed event', function()
+ command('let g:triggered = 0')
+ command('new')
+ command('autocmd WinClosed <buffer> :let g:triggered+=1')
+ eq(0, eval('g:triggered'))
+ command('close')
+ eq(1, eval('g:triggered'))
+ end)
+
+ it(':bdelete triggers WinClosed event', function()
+ command('let g:triggered = 0')
+ command('autocmd WinClosed <buffer> :let g:triggered+=1')
+ local first_buffer = eval("bufnr('%')")
+ command('new')
+ command('bdelete ' .. first_buffer )
+ eq(1, eval('g:triggered'))
+ end)
+
+ it(':close triggers WinClosed event in another tab', function()
+ command('let g:triggered = 0')
+ local current_buffer = eval("bufnr('%')")
+ command('autocmd WinClosed <buffer> :let g:triggered+=1')
+ command('tabnew')
+ command('bdelete ' .. current_buffer)
+ eq(1, eval('g:triggered'))
+ end)
+
+ it('WinClosed events are not recursive in different window', function()
+ command('let g:triggered = 0')
+ local first_buffer = eval("bufnr('%')")
+ command('autocmd WinClosed <buffer> :let g:triggered+=1')
+ command('new')
+ local second_buffer = eval("bufnr('%')")
+ command('autocmd WinClosed <buffer> :bdelete ' .. first_buffer)
+ command('new')
+ neq(-1, funcs.bufwinnr(first_buffer))
+ command('bdelete ' .. second_buffer )
+ eq(0, eval('g:triggered'))
+
+ -- first event was triggered, second wasn't
+ eq(-1, funcs.bufwinnr(first_buffer))
+ end)
+
+ it('WinClosed events are not recursive in the same window', function()
+ command('let g:triggered = 0')
+ command('new')
+ local second_buffer = eval("bufnr('%')")
+ command('autocmd WinClosed <buffer> :let g:triggered+=1 | bdelete ' .. second_buffer)
+ neq(-1, funcs.bufwinnr(second_buffer))
+ eq(0, eval('g:triggered'))
+ command('bdelete ' .. second_buffer )
+ eq(-1, funcs.bufwinnr(second_buffer))
+ eq(1, eval('g:triggered'))
+ end)
+
+ it('WinClosed events are not recursive in different tab', function()
+ command('let g:triggered = 0')
+ command('new')
+ local second_buffer = eval("bufnr('%')")
+ command('autocmd WinClosed <buffer> :let g:triggered+=1 | bdelete ' .. second_buffer)
+ command('tabnew')
+ command('bdelete ' .. second_buffer )
+ eq(1, eval('g:triggered'))
+ end)
+
it('v:vim_did_enter is 1 after VimEnter', function()
eq(1, eval('v:vim_did_enter'))
end)