From f96f8566b5f7997266264ba94a22844d9bc22699 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Mon, 9 Oct 2023 16:14:37 +0800 Subject: test(ui/embed_spec): use notification instead of request (#25555) This avoid the hang mentioned in #24888, and also matches TUI better. --- test/functional/ui/embed_spec.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'test/functional/ui/embed_spec.lua') diff --git a/test/functional/ui/embed_spec.lua b/test/functional/ui/embed_spec.lua index cd2b48213d..db01c55e23 100644 --- a/test/functional/ui/embed_spec.lua +++ b/test/functional/ui/embed_spec.lua @@ -98,6 +98,7 @@ describe('--embed UI', function() -- attach immediately after startup, for early UI local screen = Screen.new(40, 8) + screen.rpc_async = true -- Avoid hanging. #24888 screen:attach {stdin_fd=3} screen:set_default_attr_ids { [1] = {bold = true, foreground = Screen.colors.Blue1}; -- cgit From 4e6096a67fe9860994be38bcd155e7c47313205e Mon Sep 17 00:00:00 2001 From: George Harker Date: Tue, 31 Oct 2023 20:04:53 -0700 Subject: feat(server): allow embed with listen (#25709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit connection from any channel or stdio will unblock remote_ui_wait_for_attach. Wait on stdio only if only —embed specified, if both —embed and —listen then wait on any channel. --- test/functional/ui/embed_spec.lua | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'test/functional/ui/embed_spec.lua') diff --git a/test/functional/ui/embed_spec.lua b/test/functional/ui/embed_spec.lua index db01c55e23..e75de503ee 100644 --- a/test/functional/ui/embed_spec.lua +++ b/test/functional/ui/embed_spec.lua @@ -2,10 +2,13 @@ local uv = require'luv' local helpers = require('test.functional.helpers')(after_each) local Screen = require('test.functional.ui.screen') +local thelpers = require('test.functional.terminal.helpers') local feed = helpers.feed local eq = helpers.eq local clear = helpers.clear +local ok = helpers.ok + local function test_embed(ext_linegrid) local screen @@ -133,3 +136,60 @@ describe('--embed UI', function() ]]} end) end) + +describe('--embed --listen UI', function() + it('waits for connection on listening address', function() + helpers.skip(helpers.is_os('win')) + clear() + local child_server = assert(helpers.new_pipename()) + + local screen = thelpers.screen_setup(0, + string.format( + [=[["%s", "--embed", "--listen", "%s", "-u", "NONE", "-i", "NONE", "--cmd", "%s"]]=], + helpers.nvim_prog, child_server, helpers.nvim_set)) + screen:expect{grid=[[ + {1: } | + | + | + | + | + | + {3:-- TERMINAL --} | + ]]} + + local child_session = helpers.connect(child_server) + + local info_ok, apiinfo = child_session:request('nvim_get_api_info') + assert(info_ok) + assert(#apiinfo == 2) + + child_session:request('nvim_exec2', [[ + let g:vim_entered=0 + autocmd VimEnter * call execute("let g:vim_entered=1") + ]], {}) + + -- g:vim_entered shouldn't be set to 1 until after attach + local var_ok, var = child_session:request('nvim_get_var', 'vim_entered') + assert(var_ok) + ok(var == 0) + + local child_screen = Screen.new(40, 6) + child_screen:attach(nil, child_session) + child_screen:expect{grid=[[ + ^ | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]], attr_ids={ + [1] = {foreground = Screen.colors.Blue, bold = true}; + }} + + -- g:vim_entered should now be set to 1 + var_ok, var = child_session:request('nvim_get_var', 'vim_entered') + assert(var_ok) + ok(var == 1) + + end) +end) -- cgit From d7359a87425dc38efda4f74bd580bae9946abe31 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 1 Nov 2023 12:16:37 +0800 Subject: fix(startup): trigger UIEnter for the correct channel (#25860) --- test/functional/ui/embed_spec.lua | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'test/functional/ui/embed_spec.lua') diff --git a/test/functional/ui/embed_spec.lua b/test/functional/ui/embed_spec.lua index e75de503ee..fb2cdb3c4a 100644 --- a/test/functional/ui/embed_spec.lua +++ b/test/functional/ui/embed_spec.lua @@ -159,19 +159,21 @@ describe('--embed --listen UI', function() local child_session = helpers.connect(child_server) - local info_ok, apiinfo = child_session:request('nvim_get_api_info') - assert(info_ok) - assert(#apiinfo == 2) + local info_ok, api_info = child_session:request('nvim_get_api_info') + ok(info_ok) + eq(2, #api_info) + ok(api_info[1] > 2, 'channel_id > 2', api_info[1]) child_session:request('nvim_exec2', [[ - let g:vim_entered=0 - autocmd VimEnter * call execute("let g:vim_entered=1") + let g:evs = [] + autocmd UIEnter * call add(g:evs, $"UIEnter:{v:event.chan}") + autocmd VimEnter * call add(g:evs, "VimEnter") ]], {}) - -- g:vim_entered shouldn't be set to 1 until after attach - local var_ok, var = child_session:request('nvim_get_var', 'vim_entered') - assert(var_ok) - ok(var == 0) + -- VimEnter and UIEnter shouldn't be triggered until after attach + local var_ok, var = child_session:request('nvim_get_var', 'evs') + ok(var_ok) + eq({}, var) local child_screen = Screen.new(40, 6) child_screen:attach(nil, child_session) @@ -186,10 +188,9 @@ describe('--embed --listen UI', function() [1] = {foreground = Screen.colors.Blue, bold = true}; }} - -- g:vim_entered should now be set to 1 - var_ok, var = child_session:request('nvim_get_var', 'vim_entered') - assert(var_ok) - ok(var == 1) - + -- VimEnter and UIEnter should now be triggered + var_ok, var = child_session:request('nvim_get_var', 'evs') + ok(var_ok) + eq({'VimEnter', ('UIEnter:%d'):format(api_info[1])}, var) end) end) -- cgit From 4c32927084dc491e47abffefdc7ac81eefc7b951 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 3 Nov 2023 08:19:04 +0800 Subject: test(ui/embed_spec): make sure server is started (#25880) --- test/functional/ui/embed_spec.lua | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'test/functional/ui/embed_spec.lua') diff --git a/test/functional/ui/embed_spec.lua b/test/functional/ui/embed_spec.lua index fb2cdb3c4a..e59a95c325 100644 --- a/test/functional/ui/embed_spec.lua +++ b/test/functional/ui/embed_spec.lua @@ -2,13 +2,15 @@ local uv = require'luv' local helpers = require('test.functional.helpers')(after_each) local Screen = require('test.functional.ui.screen') -local thelpers = require('test.functional.terminal.helpers') local feed = helpers.feed local eq = helpers.eq +local neq = helpers.neq local clear = helpers.clear local ok = helpers.ok - +local funcs = helpers.funcs +local nvim_prog = helpers.nvim_prog +local retry = helpers.retry local function test_embed(ext_linegrid) local screen @@ -142,20 +144,9 @@ describe('--embed --listen UI', function() helpers.skip(helpers.is_os('win')) clear() local child_server = assert(helpers.new_pipename()) - - local screen = thelpers.screen_setup(0, - string.format( - [=[["%s", "--embed", "--listen", "%s", "-u", "NONE", "-i", "NONE", "--cmd", "%s"]]=], - helpers.nvim_prog, child_server, helpers.nvim_set)) - screen:expect{grid=[[ - {1: } | - | - | - | - | - | - {3:-- TERMINAL --} | - ]]} + uv.fs_unlink(child_server) + funcs.jobstart({nvim_prog, '--embed', '--listen', child_server, '--clean'}) + retry(nil, nil, function() neq(nil, uv.fs_stat(child_server)) end) local child_session = helpers.connect(child_server) @@ -182,10 +173,11 @@ describe('--embed --listen UI', function() {1:~ }| {1:~ }| {1:~ }| - {1:~ }| + {2:[No Name] 0,0-1 All}| | ]], attr_ids={ [1] = {foreground = Screen.colors.Blue, bold = true}; + [2] = {reverse = true, bold = true}; }} -- VimEnter and UIEnter should now be triggered -- cgit From b514edcdf4747b2ebf00a97f89f310d6d4f090f5 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 23 Nov 2023 23:05:52 +0800 Subject: test: remove the pipe created by new_pipename() (#26173) --- test/functional/ui/embed_spec.lua | 1 - 1 file changed, 1 deletion(-) (limited to 'test/functional/ui/embed_spec.lua') diff --git a/test/functional/ui/embed_spec.lua b/test/functional/ui/embed_spec.lua index e59a95c325..9729f65355 100644 --- a/test/functional/ui/embed_spec.lua +++ b/test/functional/ui/embed_spec.lua @@ -144,7 +144,6 @@ describe('--embed --listen UI', function() helpers.skip(helpers.is_os('win')) clear() local child_server = assert(helpers.new_pipename()) - uv.fs_unlink(child_server) funcs.jobstart({nvim_prog, '--embed', '--listen', child_server, '--clean'}) retry(nil, nil, function() neq(nil, uv.fs_stat(child_server)) end) -- cgit