local helpers = require('test.functional.helpers')(after_each) local child_session = require('test.functional.terminal.helpers') local ok = helpers.ok if helpers.skip(helpers.is_os('win')) then return end describe('api', function() local screen local socket_name = "./Xtest_functional_api.sock" before_each(function() helpers.clear() os.remove(socket_name) screen = child_session.screen_setup(0, '["'..helpers.nvim_prog ..'", "-u", "NONE", "-i", "NONE", "--cmd", "'..helpers.nvim_set..'"]') end) after_each(function() os.remove(socket_name) end) it("qa! RPC request during insert-mode", function() screen:expect{grid=[[ {1: } | {4:~ }| {4:~ }| {4:~ }| {4:~ }| | {3:-- TERMINAL --} | ]]} -- Start the socket from the child nvim. child_session.feed_data(":echo serverstart('"..socket_name.."')\n") -- Wait for socket creation. screen:expect([[ {1: } | {4:~ }| {4:~ }| {4:~ }| {4:~ }| ]]..socket_name..[[ | {3:-- TERMINAL --} | ]]) local socket_session1 = helpers.connect(socket_name) local socket_session2 = helpers.connect(socket_name) child_session.feed_data("i[tui] insert-mode") -- Wait for stdin to be processed. screen:expect([[ [tui] insert-mode{1: } | {4:~ }| {4:~ }| {4:~ }| {4:~ }| {3:-- INSERT --} | {3:-- TERMINAL --} | ]]) ok((socket_session1:request("nvim_ui_attach", 42, 6, {rgb=true}))) ok((socket_session2:request("nvim_ui_attach", 25, 30, {rgb=true}))) socket_session1:notify("nvim_input", "\n[socket 1] this is more than 25 columns") socket_session2:notify("nvim_input", "\n[socket 2] input") screen:expect([[ [tui] insert-mode | [socket 1] this is more t | han 25 columns | [socket 2] input{1: } | {4:~ } | {3:-- INSERT --} | {3:-- TERMINAL --} | ]]) socket_session1:request("nvim_command", "qa!") end) end)