local t = require('test.testutil') local n = require('test.functional.testnvim')() local clear = n.clear local command = n.command local eq = t.eq local eval = n.eval local request = n.request local source = n.source describe('autocmd BufEnter', function() before_each(clear) it("triggered by nvim_command('edit ')", function() command("autocmd BufEnter * if isdirectory(expand('')) | let g:dir_bufenter = 1 | endif") request('nvim_command', 'split .') eq(1, eval("exists('g:dir_bufenter')")) -- Did BufEnter for the directory. eq(2, eval("bufnr('%')")) -- Switched to the dir buffer. end) it('triggered by "try|:split |endtry" in a function', function() command("autocmd BufEnter * if isdirectory(expand('')) | let g:dir_bufenter = 1 | endif") source([[ function! Test() try exe 'split .' catch endtry endfunction ]]) command('call Test()') eq(1, eval("exists('g:dir_bufenter')")) -- Did BufEnter for the directory. eq(2, eval("bufnr('%')")) -- Switched to the dir buffer. end) it('triggered by ":split normal|:help|:bw"', function() n.add_builddir_to_rtp() command('split normal') command('wincmd j') command('help') command('wincmd L') command('autocmd BufEnter normal let g:bufentered = 1') command('bw') eq(1, eval('bufnr("%")')) -- The cursor is back to the bottom window eq(0, eval("exists('g:bufentered')")) -- The autocmd hasn't been triggered end) end)