2024-04-09 04:26:16 -07:00
|
|
|
local t = require('test.functional.testutil')()
|
2023-11-28 22:24:24 -07:00
|
|
|
local Screen = require('test.functional.ui.screen')
|
2021-05-28 12:45:34 -07:00
|
|
|
|
2024-04-08 02:03:20 -07:00
|
|
|
local clear = t.clear
|
|
|
|
local eq = t.eq
|
|
|
|
local api = t.api
|
|
|
|
local fn = t.fn
|
|
|
|
local exec = t.exec
|
|
|
|
local feed = t.feed
|
|
|
|
local assert_log = t.assert_log
|
|
|
|
local check_close = t.check_close
|
|
|
|
local is_os = t.is_os
|
2023-09-24 12:19:01 -07:00
|
|
|
|
|
|
|
local testlog = 'Xtest_autocmd_oldtest_log'
|
2021-05-28 12:45:34 -07:00
|
|
|
|
|
|
|
describe('oldtests', function()
|
|
|
|
before_each(clear)
|
|
|
|
|
2023-09-24 12:19:01 -07:00
|
|
|
after_each(function()
|
2024-04-05 20:18:43 -07:00
|
|
|
check_close()
|
2023-09-24 12:19:01 -07:00
|
|
|
os.remove(testlog)
|
|
|
|
end)
|
|
|
|
|
2021-05-28 12:45:34 -07:00
|
|
|
local exec_lines = function(str)
|
2024-01-12 10:59:57 -07:00
|
|
|
return fn.split(fn.execute(str), '\n')
|
2021-05-28 12:45:34 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
local add_an_autocmd = function()
|
|
|
|
exec [[
|
|
|
|
augroup vimBarTest
|
|
|
|
au BufReadCmd * echo 'hello'
|
|
|
|
augroup END
|
|
|
|
]]
|
|
|
|
|
|
|
|
eq(3, #exec_lines('au vimBarTest'))
|
2024-01-12 10:59:57 -07:00
|
|
|
eq(1, #api.nvim_get_autocmds({ group = 'vimBarTest' }))
|
2021-05-28 12:45:34 -07:00
|
|
|
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'))
|
2024-01-12 10:59:57 -07:00
|
|
|
eq({}, api.nvim_get_autocmds({ group = 'vimBarTest' }))
|
2021-05-28 12:45:34 -07:00
|
|
|
|
|
|
|
-- 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()
|
2023-09-24 12:19:01 -07:00
|
|
|
clear({ env = { NVIM_LOG_FILE = testlog } })
|
2024-01-12 10:59:57 -07:00
|
|
|
fn.writefile({ 'Test file Xxx1' }, 'Xxx1')
|
|
|
|
fn.writefile({ 'Test file Xxx2' }, 'Xxx2')
|
2023-04-11 02:18:54 -07:00
|
|
|
local fname = 'Xtest_functional_autocmd_unload'
|
2021-05-28 12:45:34 -07:00
|
|
|
|
|
|
|
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
|
|
|
|
]]
|
|
|
|
|
2024-01-12 10:59:57 -07:00
|
|
|
fn.writefile(fn.split(content, '\n'), fname)
|
2021-05-28 12:45:34 -07:00
|
|
|
|
2024-01-12 10:59:57 -07:00
|
|
|
fn.delete('Xout')
|
|
|
|
fn.system(string.format('%s --clean -N -S %s', api.nvim_get_vvar('progpath'), fname))
|
|
|
|
eq(1, fn.filereadable('Xout'))
|
2021-05-28 12:45:34 -07:00
|
|
|
|
2024-01-12 10:59:57 -07:00
|
|
|
fn.delete('Xxx1')
|
|
|
|
fn.delete('Xxx2')
|
|
|
|
fn.delete(fname)
|
|
|
|
fn.delete('Xout')
|
2023-09-24 12:19:01 -07:00
|
|
|
|
|
|
|
if is_os('win') then
|
|
|
|
assert_log('stream write failed. RPC canceled; closing channel', testlog)
|
|
|
|
end
|
2021-05-28 12:45:34 -07:00
|
|
|
end)
|
2023-11-28 22:24:24 -07:00
|
|
|
|
|
|
|
-- 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)
|
2021-05-28 12:45:34 -07:00
|
|
|
end)
|