neovim/test/functional/autocmd/autocmd_oldtest_spec.lua

146 lines
4.7 KiB
Lua

local t = require('test.testutil')
local n = require('test.functional.testnvim')()
local Screen = require('test.functional.ui.screen')
local clear = n.clear
local eq = t.eq
local api = n.api
local fn = n.fn
local exec = n.exec
local feed = n.feed
local assert_log = t.assert_log
local check_close = n.check_close
local is_os = t.is_os
local testlog = 'Xtest_autocmd_oldtest_log'
describe('oldtests', function()
before_each(clear)
after_each(function()
check_close()
os.remove(testlog)
end)
local exec_lines = function(str)
return fn.split(fn.execute(str), '\n')
end
local add_an_autocmd = function()
exec [[
augroup vimBarTest
au BufReadCmd * echo 'hello'
augroup END
]]
eq(3, #exec_lines('au vimBarTest'))
eq(1, #api.nvim_get_autocmds({ group = 'vimBarTest' }))
end
it('should recognize a bar before the {event}', function()
-- Good spacing
add_an_autocmd()
exec [[ augroup vimBarTest | au! | augroup END ]]
eq(1, #exec_lines('au vimBarTest'))
eq({}, api.nvim_get_autocmds({ group = 'vimBarTest' }))
-- Sad spacing
add_an_autocmd()
exec [[ augroup vimBarTest| au!| augroup END ]]
eq(1, #exec_lines('au vimBarTest'))
-- test that a bar is recognized after the {event}
add_an_autocmd()
exec [[ augroup vimBarTest| au!BufReadCmd| augroup END ]]
eq(1, #exec_lines('au vimBarTest'))
add_an_autocmd()
exec [[ au! vimBarTest|echo 'hello' ]]
eq(1, #exec_lines('au vimBarTest'))
end)
it('should fire on unload buf', function()
clear({ env = { NVIM_LOG_FILE = testlog } })
fn.writefile({ 'Test file Xxx1' }, 'Xxx1')
fn.writefile({ 'Test file Xxx2' }, 'Xxx2')
local fname = 'Xtest_functional_autocmd_unload'
local content = [[
func UnloadAllBufs()
let i = 1
while i <= bufnr('$')
if i != bufnr('%') && bufloaded(i)
exe i . 'bunload'
endif
let i += 1
endwhile
endfunc
au BufUnload * call UnloadAllBufs()
au VimLeave * call writefile(['Test Finished'], 'Xout')
set nohidden
edit Xxx1
split Xxx2
q
]]
fn.writefile(fn.split(content, '\n'), fname)
fn.delete('Xout')
fn.system(string.format('%s --clean -N -S %s', api.nvim_get_vvar('progpath'), fname))
eq(1, fn.filereadable('Xout'))
fn.delete('Xxx1')
fn.delete('Xxx2')
fn.delete(fname)
fn.delete('Xout')
if is_os('win') then
assert_log('stream write failed. RPC canceled; closing channel', testlog)
end
end)
-- oldtest: Test_delete_ml_get_errors()
it('no ml_get error with TextChanged autocommand and delete', function()
local screen = Screen.new(75, 10)
screen:attach()
screen:set_default_attr_ids({
[1] = { background = Screen.colors.Cyan },
})
exec([[
set noshowcmd noruler scrolloff=0
source test/old/testdir/samples/matchparen.vim
edit test/old/testdir/samples/box.txt
]])
feed('249GV<C-End>d')
screen:expect {
grid = [[
const auto themeEmoji = _forPeer->themeEmoji(); |
if (themeEmoji.isEmpty()) { |
return nonCustom; |
} |
const auto &themes = _forPeer->owner().cloudThemes(); |
const auto theme = themes.themeForEmoji(themeEmoji); |
if (!theme) {1:{} |
return nonCustom; |
{1:^}} |
353 fewer lines |
]],
}
feed('<PageUp>')
screen:expect {
grid = [[
|
auto BackgroundBox::Inner::resolveResetCustomPaper() const |
-> std::optional<Data::WallPaper> { |
if (!_forPeer) { |
return {}; |
} |
const auto nonCustom = Window::Theme::Background()->paper(); |
const auto themeEmoji = _forPeer->themeEmoji(); |
^if (themeEmoji.isEmpty()) { |
353 fewer lines |
]],
}
end)
end)