diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/autocmd/autocmd_spec.lua | 66 |
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) |