aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/ui_spec.lua
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-29 22:39:54 +0000
committerJosh Rahm <joshuarahm@gmail.com>2023-11-29 22:39:54 +0000
commit21cb7d04c387e4198ca8098a884c78b56ffcf4c2 (patch)
tree84fe5690df1551f0bb2bdfe1a13aacd29ebc1de7 /test/functional/api/ui_spec.lua
parentd9c904f85a23a496df4eb6be42aa43f007b22d50 (diff)
parent4a8bf24ac690004aedf5540fa440e788459e5e34 (diff)
downloadrneovim-colorcolchar.tar.gz
rneovim-colorcolchar.tar.bz2
rneovim-colorcolchar.zip
Merge remote-tracking branch 'upstream/master' into colorcolcharcolorcolchar
Diffstat (limited to 'test/functional/api/ui_spec.lua')
-rw-r--r--test/functional/api/ui_spec.lua84
1 files changed, 73 insertions, 11 deletions
diff --git a/test/functional/api/ui_spec.lua b/test/functional/api/ui_spec.lua
index 279cd1856d..6efb6726fe 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
@@ -11,17 +14,35 @@ 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 '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',
@@ -37,14 +58,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'))
@@ -56,3 +76,45 @@ 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('<C-Z>')
+ screen:expect(function() eq(true, screen.suspended) end)
+ eq({ 's' }, eval('g:ev'))
+ screen.suspended = false
+ feed('<Ignore>')
+ 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('<C-Z><C-Z><C-Z>')
+ 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 | 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'))
+end)