From ff3d04b75b4a9314815c37d53ebc4d035a043335 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 14 Feb 2023 08:07:38 -0500 Subject: refactor(api): VALIDATE macros #22256 - VALIDATE() takes a format string - deduplicate check_string_array - VALIDATE_RANGE - validate UI args --- test/functional/api/ui_spec.lua | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'test/functional/api/ui_spec.lua') diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua index 279cd1856d..5654ef31ef 100644 --- a/test/functional/api/ui_spec.lua +++ b/test/functional/api/ui_spec.lua @@ -11,17 +11,37 @@ describe('nvim_ui_attach()', function() before_each(function() clear() end) + it('handles very large width/height #2180', function() local screen = Screen.new(999, 999) screen:attach() eq(999, eval('&lines')) eq(999, eval('&columns')) end) - it('invalid option returns error', function() + + it('validation', function() eq('No such UI option: foo', pcall_err(meths.ui_attach, 80, 24, { foo={'foo'} })) - end) - it('validates channel arg', function() + + eq('Invalid ext_linegrid: expected Boolean, got Array', + pcall_err(meths.ui_attach, 80, 24, { ext_linegrid={} })) + eq('Invalid override: expected Boolean, got Array', + pcall_err(meths.ui_attach, 80, 24, { override={} })) + eq('Invalid rgb: expected Boolean, got Array', + pcall_err(meths.ui_attach, 80, 24, { rgb={} })) + eq('Invalid term_name: expected String, got Boolean', + pcall_err(meths.ui_attach, 80, 24, { term_name=true })) + eq('Invalid term_colors: expected Integer, got Boolean', + pcall_err(meths.ui_attach, 80, 24, { term_colors=true })) + eq('Invalid term_background: expected String, got Boolean', + pcall_err(meths.ui_attach, 80, 24, { term_background=true })) + eq('Invalid stdin_fd: expected Integer, got String', + pcall_err(meths.ui_attach, 80, 24, { stdin_fd='foo' })) + eq('Invalid stdin_tty: expected Boolean, got String', + pcall_err(meths.ui_attach, 80, 24, { stdin_tty='foo' })) + eq('Invalid stdout_tty: expected Boolean, got String', + pcall_err(meths.ui_attach, 80, 24, { stdout_tty='foo' })) + eq('UI not attached to channel: 1', pcall_err(request, 'nvim_ui_try_resize', 40, 10)) eq('UI not attached to channel: 1', -- cgit From 556f8646c01d1751cf39fe4df9c622899dceab9d Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 14 Feb 2023 14:19:28 -0500 Subject: refactor(api): consistent VALIDATE messages #22262 Problem: Validation messages are not consistently formatted. - Parameter names sometimes are NOT quoted. - Descriptive names (non-parameters) sometimes ARE quoted. Solution: Always quote the `name` value passed to a VALIDATE macro _unless_ the value has whitespace. --- test/functional/api/ui_spec.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'test/functional/api/ui_spec.lua') diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua index 5654ef31ef..b616f51d10 100644 --- a/test/functional/api/ui_spec.lua +++ b/test/functional/api/ui_spec.lua @@ -23,23 +23,23 @@ describe('nvim_ui_attach()', function() eq('No such UI option: foo', pcall_err(meths.ui_attach, 80, 24, { foo={'foo'} })) - eq('Invalid ext_linegrid: expected Boolean, got Array', + eq("Invalid 'ext_linegrid': expected Boolean, got Array", pcall_err(meths.ui_attach, 80, 24, { ext_linegrid={} })) - eq('Invalid override: expected Boolean, got Array', + eq("Invalid 'override': expected Boolean, got Array", pcall_err(meths.ui_attach, 80, 24, { override={} })) - eq('Invalid rgb: expected Boolean, got Array', + eq("Invalid 'rgb': expected Boolean, got Array", pcall_err(meths.ui_attach, 80, 24, { rgb={} })) - eq('Invalid term_name: expected String, got Boolean', + eq("Invalid 'term_name': expected String, got Boolean", pcall_err(meths.ui_attach, 80, 24, { term_name=true })) - eq('Invalid term_colors: expected Integer, got Boolean', + eq("Invalid 'term_colors': expected Integer, got Boolean", pcall_err(meths.ui_attach, 80, 24, { term_colors=true })) - eq('Invalid term_background: expected String, got Boolean', + eq("Invalid 'term_background': expected String, got Boolean", pcall_err(meths.ui_attach, 80, 24, { term_background=true })) - eq('Invalid stdin_fd: expected Integer, got String', + eq("Invalid 'stdin_fd': expected Integer, got String", pcall_err(meths.ui_attach, 80, 24, { stdin_fd='foo' })) - eq('Invalid stdin_tty: expected Boolean, got String', + eq("Invalid 'stdin_tty': expected Boolean, got String", pcall_err(meths.ui_attach, 80, 24, { stdin_tty='foo' })) - eq('Invalid stdout_tty: expected Boolean, got String', + eq("Invalid 'stdout_tty': expected Boolean, got String", pcall_err(meths.ui_attach, 80, 24, { stdout_tty='foo' })) eq('UI not attached to channel: 1', -- cgit From a8cfdf43bc6226e32679ec59769ea3e48ca26193 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 23 Jul 2023 07:16:41 +0800 Subject: fix(events): trigger VimResume on next UI request (#24426) --- test/functional/api/ui_spec.lua | 59 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'test/functional/api/ui_spec.lua') diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua index b616f51d10..60d115c6f1 100644 --- a/test/functional/api/ui_spec.lua +++ b/test/functional/api/ui_spec.lua @@ -1,8 +1,11 @@ local helpers = require('test.functional.helpers')(after_each) local Screen = require('test.functional.ui.screen') local clear = helpers.clear +local command = helpers.command local eq = helpers.eq local eval = helpers.eval +local exec = helpers.exec +local feed = helpers.feed local meths = helpers.meths local request = helpers.request local pcall_err = helpers.pcall_err @@ -76,3 +79,59 @@ it('autocmds UIEnter/UILeave', function() 'UILeave', }, eval('g:evs')) end) + +it('autocmds VimSuspend/VimResume #22041', function() + clear() + local screen = Screen.new() + screen:attach() + exec([[ + let g:ev = [] + autocmd VimResume * :call add(g:ev, 'r') + autocmd VimSuspend * :call add(g:ev, 's') + ]]) + + eq(false, screen.suspended) + feed('') + screen:expect(function() eq (true, screen.suspended) end) + eq({ 's' }, eval('g:ev')) + screen.suspended = false + feed('') + eq({ 's', 'r' }, eval('g:ev')) + + command('suspend') + screen:expect(function() eq (true, screen.suspended) end) + eq({ 's', 'r', 's' }, eval('g:ev')) + screen.suspended = false + meths.input_mouse('move', '', '', 0, 0, 0) + eq({ 's', 'r', 's', 'r' }, eval('g:ev')) + + feed('') + screen:expect(function() eq (true, screen.suspended) end) + meths.ui_set_focus(false) + eq({ 's', 'r', 's', 'r', 's' }, eval('g:ev')) + screen.suspended = false + meths.ui_set_focus(true) + eq({ 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev')) + + command('suspend') + screen:expect(function() eq (true, screen.suspended) end) + screen:detach() + eq({ 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev')) + screen.suspended = false + screen:attach() + eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev')) + + eq(false, screen.suspended) + feed('') + screen:expect(function() eq (true, screen.suspended) end) + eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev')) + screen.suspended = false + feed('') + eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev')) + screen:expect(function() eq (true, screen.suspended) end) + screen.suspended = false + feed('i=g:ev') + eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev')) + eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', '' }, + meths.buf_get_lines(0, 0, -1, true)) +end) -- cgit From f56c1848091bb64c63b5bc25ec74bcbd2f52bdde Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 23 Jul 2023 10:03:05 +0800 Subject: test: fix VimResume test flakiness (#24438) --- test/functional/api/ui_spec.lua | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) (limited to 'test/functional/api/ui_spec.lua') diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua index 60d115c6f1..2cadfe117f 100644 --- a/test/functional/api/ui_spec.lua +++ b/test/functional/api/ui_spec.lua @@ -92,46 +92,32 @@ it('autocmds VimSuspend/VimResume #22041', function() eq(false, screen.suspended) feed('') - screen:expect(function() eq (true, screen.suspended) end) + screen:expect(function() eq(true, screen.suspended) end) eq({ 's' }, eval('g:ev')) screen.suspended = false feed('') eq({ 's', 'r' }, eval('g:ev')) command('suspend') - screen:expect(function() eq (true, screen.suspended) end) + screen:expect(function() eq(true, screen.suspended) end) eq({ 's', 'r', 's' }, eval('g:ev')) screen.suspended = false meths.input_mouse('move', '', '', 0, 0, 0) eq({ 's', 'r', 's', 'r' }, eval('g:ev')) - feed('') - screen:expect(function() eq (true, screen.suspended) end) + feed('') + screen:expect(function() eq(true, screen.suspended) end) meths.ui_set_focus(false) eq({ 's', 'r', 's', 'r', 's' }, eval('g:ev')) screen.suspended = false meths.ui_set_focus(true) eq({ 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev')) - command('suspend') - screen:expect(function() eq (true, screen.suspended) end) + command('suspend | suspend | suspend') + screen:expect(function() eq(true, screen.suspended) end) screen:detach() eq({ 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev')) screen.suspended = false screen:attach() eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev')) - - eq(false, screen.suspended) - feed('') - screen:expect(function() eq (true, screen.suspended) end) - eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev')) - screen.suspended = false - feed('') - eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's' }, eval('g:ev')) - screen:expect(function() eq (true, screen.suspended) end) - screen.suspended = false - feed('i=g:ev') - eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r' }, eval('g:ev')) - eq({ 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', 's', 'r', '' }, - meths.buf_get_lines(0, 0, -1, true)) 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/api/ui_spec.lua | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'test/functional/api/ui_spec.lua') diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua index 2cadfe117f..a668d47448 100644 --- a/test/functional/api/ui_spec.lua +++ b/test/functional/api/ui_spec.lua @@ -60,14 +60,13 @@ describe('nvim_ui_attach()', function() end) it('autocmds UIEnter/UILeave', function() - clear{ - args_rm={'--headless'}, - args={ - '--cmd', 'let g:evs = []', - '--cmd', 'autocmd UIEnter * :call add(g:evs, "UIEnter") | let g:uienter_ev = deepcopy(v:event)', - '--cmd', 'autocmd UILeave * :call add(g:evs, "UILeave") | let g:uileave_ev = deepcopy(v:event)', - '--cmd', 'autocmd VimEnter * :call add(g:evs, "VimEnter")', - }} + clear{args_rm={'--headless'}} + exec([[ + let g:evs = [] + autocmd UIEnter * call add(g:evs, "UIEnter") | let g:uienter_ev = deepcopy(v:event) + autocmd UILeave * call add(g:evs, "UILeave") | let g:uileave_ev = deepcopy(v:event) + autocmd VimEnter * call add(g:evs, "VimEnter") + ]]) local screen = Screen.new() screen:attach() eq({chan=1}, eval('g:uienter_ev')) -- cgit From 8d9789a0f3b748b75ac4ae1b8e43d27af40d49fe Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Tue, 7 Nov 2023 11:31:21 -0600 Subject: docs: deprecate the "term_background" UI field --- test/functional/api/ui_spec.lua | 2 -- 1 file changed, 2 deletions(-) (limited to 'test/functional/api/ui_spec.lua') diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua index a668d47448..6efb6726fe 100644 --- a/test/functional/api/ui_spec.lua +++ b/test/functional/api/ui_spec.lua @@ -36,8 +36,6 @@ describe('nvim_ui_attach()', function() pcall_err(meths.ui_attach, 80, 24, { term_name=true })) eq("Invalid 'term_colors': expected Integer, got Boolean", pcall_err(meths.ui_attach, 80, 24, { term_colors=true })) - eq("Invalid 'term_background': expected String, got Boolean", - pcall_err(meths.ui_attach, 80, 24, { term_background=true })) eq("Invalid 'stdin_fd': expected Integer, got String", pcall_err(meths.ui_attach, 80, 24, { stdin_fd='foo' })) eq("Invalid 'stdin_tty': expected Boolean, got String", -- cgit