vim-patch:8.1.0832: confirm() is not tested (#19896)

Problem:    confirm() is not tested.
Solution:   Add a test. (Dominique Pelle, closes vim/vim#3868)
2e05009218
This commit is contained in:
zeertzjq
2022-08-23 07:20:23 +08:00
committed by GitHub
parent baaaa1f2b3
commit 2fd25fb909
3 changed files with 136 additions and 4 deletions

View File

@@ -8,7 +8,8 @@ local clear = helpers.clear
local source = helpers.source
local command = helpers.command
local exc_exec = helpers.exc_exec
local nvim_async = helpers.nvim_async
local pcall_err = helpers.pcall_err
local async_meths = helpers.async_meths
local NIL = helpers.NIL
local screen
@@ -449,6 +450,78 @@ describe('inputdialog()', function()
end)
describe('confirm()', function()
-- oldtest: Test_confirm()
it('works', function()
meths.set_option('more', false) -- Avoid hit-enter prompt
meths.set_option('laststatus', 2)
-- screen:expect() calls are needed to avoid feeding input too early
screen:expect({any = 'No Name'})
async_meths.command([[let a = confirm('Press O to proceed')]])
screen:expect({any = '{CONFIRM:.+: }'})
feed('o')
screen:expect({any = 'No Name'})
eq(1, meths.get_var('a'))
async_meths.command([[let a = confirm('Are you sure?', "&Yes\n&No")]])
screen:expect({any = '{CONFIRM:.+: }'})
feed('y')
screen:expect({any = 'No Name'})
eq(1, meths.get_var('a'))
async_meths.command([[let a = confirm('Are you sure?', "&Yes\n&No")]])
screen:expect({any = '{CONFIRM:.+: }'})
feed('n')
screen:expect({any = 'No Name'})
eq(2, meths.get_var('a'))
-- Not possible to match Vim's CTRL-C test here as CTRL-C always sets got_int in Nvim.
-- confirm() should return 0 when pressing ESC.
async_meths.command([[let a = confirm('Are you sure?', "&Yes\n&No")]])
screen:expect({any = '{CONFIRM:.+: }'})
feed('<Esc>')
screen:expect({any = 'No Name'})
eq(0, meths.get_var('a'))
-- Default choice is returned when pressing <CR>.
async_meths.command([[let a = confirm('Are you sure?', "&Yes\n&No")]])
screen:expect({any = '{CONFIRM:.+: }'})
feed('<CR>')
screen:expect({any = 'No Name'})
eq(1, meths.get_var('a'))
async_meths.command([[let a = confirm('Are you sure?', "&Yes\n&No", 2)]])
screen:expect({any = '{CONFIRM:.+: }'})
feed('<CR>')
screen:expect({any = 'No Name'})
eq(2, meths.get_var('a'))
async_meths.command([[let a = confirm('Are you sure?', "&Yes\n&No", 0)]])
screen:expect({any = '{CONFIRM:.+: }'})
feed('<CR>')
screen:expect({any = 'No Name'})
eq(0, meths.get_var('a'))
-- Test with the {type} 4th argument
for _, type in ipairs({'Error', 'Question', 'Info', 'Warning', 'Generic'}) do
async_meths.command(([[let a = confirm('Are you sure?', "&Yes\n&No", 1, '%s')]]):format(type))
screen:expect({any = '{CONFIRM:.+: }'})
feed('y')
screen:expect({any = 'No Name'})
eq(1, meths.get_var('a'))
end
eq('Vim(call):E730: using List as a String',
pcall_err(command, 'call confirm([])'))
eq('Vim(call):E730: using List as a String',
pcall_err(command, 'call confirm("Are you sure?", [])'))
eq('Vim(call):E745: Using a List as a Number',
pcall_err(command, 'call confirm("Are you sure?", "&Yes\n&No\n", [])'))
eq('Vim(call):E730: using List as a String',
pcall_err(command, 'call confirm("Are you sure?", "&Yes\n&No\n", 0, [])'))
end)
it("shows dialog even if :silent #8788", function()
command("autocmd BufNewFile * call confirm('test')")
@@ -483,7 +556,7 @@ describe('confirm()', function()
feed(':call nvim_command("edit x")<cr>')
check_and_clear(':call nvim_command("edit |\n')
nvim_async('command', 'edit x')
async_meths.command('edit x')
check_and_clear(' |\n')
end)
end)