diff options
author | hlpr98 <hlpr98@gmail.com> | 2019-05-27 22:04:24 +0530 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2022-12-31 10:43:28 +0100 |
commit | 24488169564c39a506c235bf6a33b8e23a8cb528 (patch) | |
tree | 3b30c1fcc3b4ce2fef81d45eebe61baa4f0315ed /test | |
parent | 4ace9e7e417fe26c8b73ff1d6042e6e4f3df9ebf (diff) | |
download | rneovim-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.lua | 170 |
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) |