diff options
author | Jakub Łuczyński <doubleloop@users.noreply.github.com> | 2022-11-19 13:46:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-19 20:46:04 +0800 |
commit | 4650af38f07defb87d13d9567c127b0070bfccb9 (patch) | |
tree | c077ab25696f8e268f7cec98449ece5c441c182b | |
parent | cfdf5e6f372928c11a2b1459b14c4c2de5f69c51 (diff) | |
download | rneovim-4650af38f07defb87d13d9567c127b0070bfccb9.tar.gz rneovim-4650af38f07defb87d13d9567c127b0070bfccb9.tar.bz2 rneovim-4650af38f07defb87d13d9567c127b0070bfccb9.zip |
test: fix failing tui_spec.lua tests (#21117)
* refactor(test): use exec_lua
* fix(test): fix failing tui_spec tests
test is failing when path of tty-test does not fit cmdline
-rw-r--r-- | test/functional/terminal/helpers.lua | 25 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 15 |
2 files changed, 26 insertions, 14 deletions
diff --git a/test/functional/terminal/helpers.lua b/test/functional/terminal/helpers.lua index d69f3207f1..841c92387f 100644 --- a/test/functional/terminal/helpers.lua +++ b/test/functional/terminal/helpers.lua @@ -4,19 +4,31 @@ local helpers = require('test.functional.helpers')(nil) local Screen = require('test.functional.ui.screen') local testprg = helpers.testprg +local exec_lua = helpers.exec_lua local feed_command, nvim = helpers.feed_command, helpers.nvim local function feed_data(data) - -- A string containing NUL bytes is not converted to a Blob when - -- calling nvim_set_var() API, so convert it using Lua instead. - nvim('exec_lua', 'vim.g.term_data = ...', {data}) - nvim('command', 'call jobsend(b:terminal_job_id, term_data)') + if type(data) == 'table' then + data = table.concat(data, '\n') + end + exec_lua('vim.api.nvim_chan_send(vim.b.terminal_job_id, ...)', data) end local function feed_termcode(data) - -- feed with the job API - nvim('command', 'call jobsend(b:terminal_job_id, "\\x1b'..data..'")') + feed_data('\027' .. data) +end + +local function make_lua_executor(session) + return function(code, ...) + local status, rv = session:request('nvim_exec_lua', code, {...}) + if not status then + session:stop() + error(rv[2]) + end + return rv + end end + -- some helpers for controlling the terminal. the codes were taken from -- infocmp xterm-256color which is less what libvterm understands -- civis/cnorm @@ -109,6 +121,7 @@ end return { feed_data = feed_data, feed_termcode = feed_termcode, + make_lua_executor = make_lua_executor, hide_cursor = hide_cursor, show_cursor = show_cursor, enter_altscreen = enter_altscreen, diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index d2e409cc0f..4cfdd90187 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -28,6 +28,7 @@ if helpers.skip(helpers.iswin()) then return end describe('TUI', function() local screen local child_session + local child_exec_lua before_each(function() clear() @@ -45,6 +46,7 @@ describe('TUI', function() {3:-- TERMINAL --} | ]]) child_session = helpers.connect(child_server) + child_exec_lua = thelpers.make_lua_executor(child_session) end) -- Wait for mode in the child Nvim (avoid "typeahead race" #10826). @@ -823,8 +825,8 @@ describe('TUI', function() pending("tty-test complains about not owning the terminal -- actions/runner#241") return end - feed_data(':set statusline=^^^^^^^\n') - feed_data(':terminal '..testprg('tty-test')..'\n') + child_exec_lua('vim.o.statusline="^^^^^^^"') + child_exec_lua('vim.cmd.terminal(...)', testprg('tty-test')) feed_data('i') screen:expect{grid=[[ tty ready | @@ -1340,12 +1342,9 @@ describe('TUI', function() [5] = {{foreground = tonumber('0xff8000')}, {}}, }) - feed_data(':set statusline=^^^^^^^\n') - feed_data(':set termguicolors\n') - feed_data(':terminal '..testprg('tty-test')..'\n') - -- Depending on platform the above might or might not fit in the cmdline - -- so clear it for consistent behavior. - feed_data(':\027') + child_exec_lua('vim.o.statusline="^^^^^^^"') + child_exec_lua('vim.o.termguicolors=true') + child_exec_lua('vim.cmd.terminal(...)', testprg('tty-test')) screen:expect{grid=[[ {1:t}ty ready | | |