mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
test: deal with RPC call causing Nvim to exit later
This commit is contained in:
parent
366e90cdc8
commit
72dfd57e5f
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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'))
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user