aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-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)