aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorhlpr98 <hlpr98@gmail.com>2019-05-27 22:04:24 +0530
committerbfredl <bjorn.linse@gmail.com>2022-12-31 10:43:28 +0100
commit24488169564c39a506c235bf6a33b8e23a8cb528 (patch)
tree3b30c1fcc3b4ce2fef81d45eebe61baa4f0315ed /test
parent4ace9e7e417fe26c8b73ff1d6042e6e4f3df9ebf (diff)
downloadrneovim-24488169564c39a506c235bf6a33b8e23a8cb528.tar.gz
rneovim-24488169564c39a506c235bf6a33b8e23a8cb528.tar.bz2
rneovim-24488169564c39a506c235bf6a33b8e23a8cb528.zip
feat(tui): run TUI as external process
Diffstat (limited to 'test')
-rw-r--r--test/functional/terminal/tui_spec.lua170
1 files changed, 169 insertions, 1 deletions
diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua
index 1807001842..0ede6c9978 100644
--- a/test/functional/terminal/tui_spec.lua
+++ b/test/functional/terminal/tui_spec.lua
@@ -24,6 +24,8 @@ local funcs = helpers.funcs
local meths = helpers.meths
local is_ci = helpers.is_ci
local is_os = helpers.is_os
+local spawn = helpers.spawn
+local set_session = helpers.set_session
if helpers.skip(helpers.is_os('win')) then return end
@@ -1365,7 +1367,7 @@ describe('TUI', function()
|
{4:~ }|
{5: }|
- [[['chan', 0], ['height', 6], ['override', v:false|
+ [[['chan', 1], ['height', 6], ['override', v:false|
], ['rgb', v:false], ['width', 50]]] |
{10:Press ENTER or type command to continue}{1: } |
{3:-- TERMINAL --} |
@@ -2164,3 +2166,169 @@ describe('TUI bg color', function()
screen:expect{any='new_bg=dark'}
end)
end)
+
+-- These tests require `thelpers` because --headless/--embed
+-- does not initialize the TUI.
+describe("TUI as a client", function()
+
+ it("connects to remote instance (full)", function()
+ clear()
+ local server_super = spawn(helpers.nvim_argv)
+ local client_super = spawn(helpers.nvim_argv)
+
+ set_session(server_super, true)
+ screen_server = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--listen", "127.0.0.1:7777"]')
+
+ helpers.feed("iHello, World<esc>")
+
+ set_session(client_super, true)
+ screen = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--connect", "127.0.0.1:7777"]')
+
+ screen.timeout = 1000
+ screen:expect([[
+ Hello, Worl{1:d} |
+ {4:~ }|
+ {4:~ }|
+ {4:~ }|
+ {5:[No Name] [+] 1,12 All}|
+ |
+ {3:-- TERMINAL --} |
+ ]])
+
+ feed_data(":q!\n")
+
+ -- tear down
+ helpers.feed("<esc>:q!<CR>")
+ set_session(server_super, true)
+ helpers.feed("<esc>:q!<CR>")
+ server_super:close()
+ client_super:close()
+ end)
+
+ it("connects to remote instance (--headless)", function()
+ local server = spawn({ nvim_prog, '-u', 'NONE', '-i', 'NONE', '--headless', '--listen', '127.0.0.1:7777', '-c', ":%! echo 'Hello, World'" })
+ -- wait till the server session starts
+ helpers.sleep(1000)
+
+ clear()
+ screen = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--connect", "127.0.0.1:7777"]')
+
+ screen.timeout = 1000
+ screen:expect([[
+ {1:H}ello, World |
+ {4:~ }|
+ {4:~ }|
+ {4:~ }|
+ {5:[No Name] [+] 1,1 All}|
+ |
+ {3:-- TERMINAL --} |
+ ]])
+
+ feed_data(":q!\n")
+ server:close()
+ end)
+
+ it("connects to remote instance (pipe)", function()
+ clear()
+ local server_super = spawn(helpers.nvim_argv)
+ local client_super = spawn(helpers.nvim_argv)
+
+ set_session(server_super, true)
+ screen_server = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--listen", "127.0.0.119"]')
+
+ helpers.feed("iHello, World<esc>")
+
+ set_session(client_super, true)
+ screen = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--connect", "127.0.0.119"]')
+
+ screen.timeout = 1000
+ screen:expect([[
+ Hello, Worl{1:d} |
+ {4:~ }|
+ {4:~ }|
+ {4:~ }|
+ {5:[No Name] [+] 1,12 All}|
+ |
+ {3:-- TERMINAL --} |
+ ]])
+
+ feed_data(":q!\n")
+
+ -- tear down
+ helpers.feed("<esc>:q!<CR>")
+ set_session(server_super, true)
+ helpers.feed("<esc>:q!<CR>")
+ server_super:close()
+ client_super:close()
+ end)
+
+ it("throws error when no server exists", function()
+ clear()
+ screen = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--connect", "127.0.0.1:7777"]')
+
+ screen.timeout = 1000
+ screen:expect([[
+ Could not establish connection with remote server |
+ |
+ [Process exited 1]{1: } |
+ |
+ |
+ |
+ {3:-- TERMINAL --} |
+ ]])
+ end)
+
+ it("exits when server quits", function()
+ clear()
+ local server_super = spawn(helpers.nvim_argv)
+ local client_super = spawn(helpers.nvim_argv)
+
+ set_session(server_super, true)
+ screen_server = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--listen", "127.0.0.1:7777"]')
+
+ helpers.feed("iHello, World<esc>")
+
+ set_session(client_super, true)
+ screen_client = thelpers.screen_setup(0, '["'..nvim_prog
+ ..'", "-u", "NONE", "-i", "NONE", "--connect", "127.0.0.1:7777"]')
+
+ -- assert that client has connected to server
+ screen_client.timeout = 1000
+ screen_client:expect([[
+ Hello, Worl{1:d} |
+ {4:~ }|
+ {4:~ }|
+ {4:~ }|
+ {5:[No Name] [+] 1,12 All}|
+ |
+ {3:-- TERMINAL --} |
+ ]])
+
+ -- quitting the server
+ set_session(server_super, true)
+ feed_data(":q!\n")
+ screen_server.timeout = 1000
+ screen_server:expect({any="Process exited 0"})
+
+ -- assert that client has exited
+ set_session(client_super, true)
+ screen_client:expect({any="Process exited 0"})
+
+ -- tear down
+ helpers.feed("<esc>:q!<CR>")
+ set_session(server_super, true)
+ helpers.feed("<esc>:q!<CR>")
+ server_super:close()
+ client_super:close()
+
+ -- Restore the original session
+ set_session(spawn(helpers.nvim_argv), true)
+ end)
+end)