diff options
-rw-r--r-- | test/functional/helpers.lua | 20 | ||||
-rw-r--r-- | test/functional/legacy/arglist_spec.lua | 3 | ||||
-rw-r--r-- | test/functional/legacy/excmd_spec.lua | 11 | ||||
-rw-r--r-- | test/functional/vimscript/let_spec.lua | 3 |
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) |