mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
test: api_spec
This is an (unsuccessful) attempt to cover #4163. It covers other behavior, so it's worth keeping.
This commit is contained in:
parent
e2ad3fbf27
commit
e54c0ab367
@ -1,6 +1,8 @@
|
||||
require('coxpcall')
|
||||
local lfs = require('lfs')
|
||||
local ChildProcessStream = require('nvim.child_process_stream')
|
||||
local SocketStream = require('nvim.socket_stream')
|
||||
local TcpStream = require('nvim.tcp_stream')
|
||||
local Session = require('nvim.session')
|
||||
local global_helpers = require('test.helpers')
|
||||
|
||||
@ -223,6 +225,14 @@ local function spawn(argv, merge, env)
|
||||
return Session.new(child_stream)
|
||||
end
|
||||
|
||||
-- Creates a new Session connected by domain socket (named pipe) or TCP.
|
||||
local function connect(file_or_address)
|
||||
local addr, port = string.match(file_or_address, "(.*):(%d+)")
|
||||
local stream = (addr and port) and TcpStream.open(addr, port) or
|
||||
SocketStream.open(file_or_address)
|
||||
return Session.new(stream)
|
||||
end
|
||||
|
||||
local function clear(...)
|
||||
local args = {unpack(nvim_argv)}
|
||||
local new_args
|
||||
@ -291,8 +301,7 @@ local function write_file(name, text, dont_dedent)
|
||||
file:close()
|
||||
end
|
||||
|
||||
-- Tries to get platform name, from $SYSTEM_NAME, uname,
|
||||
-- fallback is 'Windows'
|
||||
-- Tries to get platform name from $SYSTEM_NAME, uname; fallback is "Windows".
|
||||
local uname = (function()
|
||||
local platform = nil
|
||||
return (function()
|
||||
@ -508,6 +517,7 @@ return function(after_each)
|
||||
return {
|
||||
prepend_argv = prepend_argv,
|
||||
clear = clear,
|
||||
connect = connect,
|
||||
spawn = spawn,
|
||||
dedent = dedent,
|
||||
source = source,
|
||||
|
60
test/functional/terminal/api_spec.lua
Normal file
60
test/functional/terminal/api_spec.lua
Normal file
@ -0,0 +1,60 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local child_session = require('test.functional.terminal.helpers')
|
||||
local ok = helpers.ok
|
||||
|
||||
if helpers.pending_win32(pending) 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", "set noswapfile"]')
|
||||
end)
|
||||
after_each(function()
|
||||
os.remove(socket_name)
|
||||
end)
|
||||
|
||||
it("qa! RPC request during insert-mode", function()
|
||||
-- Start the socket from the child nvim.
|
||||
child_session.feed_data(":echo serverstart('"..socket_name.."')\n")
|
||||
|
||||
-- Wait for socket creation by abusing expect().
|
||||
screen:expect([[
|
||||
{1: } |
|
||||
{4:~ }|
|
||||
{4:~ }|
|
||||
{4:~ }|
|
||||
{5:[No Name] }|
|
||||
]]..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")
|
||||
|
||||
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{4: }|
|
||||
han 25 columns {4: }|
|
||||
[socket 2] input{1: } {4: }|
|
||||
{5:[No Name] [+] }|
|
||||
{3:-- INSERT --} |
|
||||
{3:-- TERMINAL --} |
|
||||
]])
|
||||
|
||||
socket_session1:request("nvim_command", "qa!")
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user