aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/functional/helpers.lua20
-rw-r--r--test/functional/legacy/arglist_spec.lua3
-rw-r--r--test/functional/legacy/excmd_spec.lua11
-rw-r--r--test/functional/vimscript/let_spec.lua3
4 files changed, 24 insertions, 13 deletions
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index 0c616e73fb..8c5a60657a 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -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.
diff --git a/test/functional/legacy/arglist_spec.lua b/test/functional/legacy/arglist_spec.lua
index 8379e426e0..f90da16d7b 100644
--- a/test/functional/legacy/arglist_spec.lua
+++ b/test/functional/legacy/arglist_spec.lua
@@ -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)
diff --git a/test/functional/legacy/excmd_spec.lua b/test/functional/legacy/excmd_spec.lua
index 802e06c799..65957d85de 100644
--- a/test/functional/legacy/excmd_spec.lua
+++ b/test/functional/legacy/excmd_spec.lua
@@ -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'))
diff --git a/test/functional/vimscript/let_spec.lua b/test/functional/vimscript/let_spec.lua
index ca1b5e8907..86905199a8 100644
--- a/test/functional/vimscript/let_spec.lua
+++ b/test/functional/vimscript/let_spec.lua
@@ -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)