test: deal with RPC call causing Nvim to exit later

This commit is contained in:
zeertzjq 2022-07-19 19:36:29 +08:00
parent 366e90cdc8
commit 72dfd57e5f
4 changed files with 24 additions and 13 deletions

View File

@ -271,10 +271,22 @@ function module.command(cmd)
end
-- use for commands which expect nvim to quit
function module.expect_exit(...)
eq("EOF was received from Nvim. Likely the Nvim process crashed.",
module.pcall_err(...))
-- Use for commands which expect nvim to quit.
-- The first argument can also be a timeout.
function module.expect_exit(fn_or_timeout, ...)
local eof_err_msg = 'EOF was received from Nvim. Likely the Nvim process crashed.'
if type(fn_or_timeout) == 'function' then
eq(eof_err_msg, module.pcall_err(fn_or_timeout, ...))
else
eq(eof_err_msg, module.pcall_err(function(timeout, fn, ...)
fn(...)
while session:next_message(timeout) do
end
if session.eof_err then
error(session.eof_err[2])
end
end, fn_or_timeout, ...))
end
end
-- Evaluates a VimL expression.

View File

@ -4,6 +4,7 @@ local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local clear, command, eq = helpers.clear, helpers.command, helpers.eq
local eval, exc_exec, neq = helpers.eval, helpers.exc_exec, helpers.neq
local expect_exit = helpers.expect_exit
local feed = helpers.feed
local pcall_err = helpers.pcall_err
@ -275,6 +276,6 @@ describe('argument list commands', function()
2 more files to edit. Quit anyway? |
[Y]es, (N)o: ^ |
]])
feed('Y')
expect_exit(100, feed, 'Y')
end)
end)

View File

@ -4,11 +4,11 @@ local clear = helpers.clear
local command = helpers.command
local exec = helpers.exec
local exec_lua = helpers.exec_lua
local expect_exit = helpers.expect_exit
local feed = helpers.feed
local funcs = helpers.funcs
local iswin = helpers.iswin
local meths = helpers.meths
local poke_eventloop = helpers.poke_eventloop
local read_file = helpers.read_file
local source = helpers.source
local eq = helpers.eq
@ -94,8 +94,7 @@ describe(':confirm command dialog', function()
{3:Save changes to "Xbar"?} |
{3:[Y]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: }^ |
]])
feed('A')
poke_eventloop()
expect_exit(100, feed, 'A')
eq('foo2\n', read_file('Xfoo'))
eq('bar2\n', read_file('Xbar'))
@ -133,8 +132,7 @@ describe(':confirm command dialog', function()
{3:Save changes to "Xbar"?} |
{3:[Y]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: }^ |
]])
feed('D')
poke_eventloop()
expect_exit(100, feed, 'D')
eq('foo2\n', read_file('Xfoo'))
eq('bar2\n', read_file('Xbar'))
@ -195,8 +193,7 @@ describe(':confirm command dialog', function()
{3:Save changes to "Xfoo"?} |
{3:[Y]es, (N)o, (C)ancel: }^ |
]])
feed('Y')
poke_eventloop()
expect_exit(100, feed, 'Y')
eq('foo4\n', read_file('Xfoo'))
eq('bar2\n', read_file('Xbar'))

View File

@ -7,6 +7,7 @@ local eval = helpers.eval
local meths = helpers.meths
local exec = helpers.exec
local exec_capture = helpers.exec_capture
local expect_exit = helpers.expect_exit
local source = helpers.source
local testprg = helpers.testprg
@ -28,7 +29,7 @@ describe(':let', function()
it(":unlet self-referencing node in a List graph #6070", function()
-- :unlet-ing a self-referencing List must not allow GC on indirectly
-- referenced in-scope Lists. Before #6070 this caused use-after-free.
source([=[
expect_exit(100, source, [=[
let [l1, l2] = [[], []]
echo 'l1:' . id(l1)
echo 'l2:' . id(l2)