From 77926b64938fb0c7a9581edbb486b712b29dafac Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 4 Aug 2022 11:11:37 +0800 Subject: vim-patch:8.2.0385: menu functionality insufficiently tested Problem: Menu functionality insufficiently tested. Solution: Add tests. Add menu_info(). (Yegappan Lakshmanan, closes vim/vim#5760) https://github.com/vim/vim/commit/0eabd4dc8ff50658f0ea0e92c7918a42242f6b80 Omit feedkeys() change: even if "L" flag is implemented it will likely use input_enqueue(), which already checks for interrupts. Omit Test_mouse_popup_menu(): already tested in Lua. --- src/nvim/testdir/test_menu.vim | 358 ++++++++++++++++++++++++++++++++++++++++ src/nvim/testdir/test_popup.vim | 22 ++- 2 files changed, 372 insertions(+), 8 deletions(-) (limited to 'src/nvim/testdir') diff --git a/src/nvim/testdir/test_menu.vim b/src/nvim/testdir/test_menu.vim index 4af75be514..24d7420751 100644 --- a/src/nvim/testdir/test_menu.vim +++ b/src/nvim/testdir/test_menu.vim @@ -89,6 +89,35 @@ func Test_menu_commands() unlet g:did_menu endfun +" Test various menu related errors +func Test_menu_errors() + menu Test.Foo :version + + " Error cases + call assert_fails('menu .Test.Foo :ls', 'E475:') + call assert_fails('menu Test. :ls', 'E330:') + call assert_fails('menu Foo. :ls', 'E331:') + call assert_fails('unmenu Test.Foo abc', 'E488:') + call assert_fails('menu :ls :ls', 'E792:') + call assert_fails('menu Test.:ls :ls', 'E792:') + call assert_fails('menu Test.Foo.Bar :ls', 'E327:') + call assert_fails('menu Test.-Sep-.Baz :ls', 'E332:') + call assert_fails('menu Foo.Bar.--.Baz :ls', 'E332:') + call assert_fails('menu disable Test.Foo.Bar', 'E327:') + call assert_fails('menu disable T.Foo', 'E329:') + call assert_fails('unmenu Test.Foo.Bar', 'E327:') + call assert_fails('cunmenu Test.Foo', 'E328:') + call assert_fails('unmenu Test.Bar', 'E329:') + call assert_fails('menu Test.Foo.Bar', 'E327:') + call assert_fails('cmenu Test.Foo', 'E328:') + call assert_fails('emenu x Test.Foo', 'E475:') + call assert_fails('emenu Test.Foo.Bar', 'E334:') + call assert_fails('menutranslate Test', 'E474:') + + silent! unmenu Foo + unmenu Test +endfunc + " Test for menu item completion in command line func Test_menu_expand() " Create the menu itmes for test @@ -119,8 +148,337 @@ func Test_menu_expand() \ "\\\"\", 'xt') call assert_equal('"emenu Buffers. Xmenu.', @:) + " Test for expanding only submenus + call feedkeys(":popup Xmenu.\\\"\", 'xt') + call assert_equal('"popup Xmenu.A1 A2 A3 A4', @:) + + " Test for expanding menus after enable/disable + call feedkeys(":menu enable Xmenu.\\\"\", 'xt') + call assert_equal('"menu enable Xmenu.A1. A2. A3. A4.', @:) + call feedkeys(":menu disable Xmenu.\\\"\", 'xt') + call assert_equal('"menu disable Xmenu.A1. A2. A3. A4.', @:) + + " Test for expanding non-existing menu path + call feedkeys(":menu xyz.\\\"\", 'xt') + call assert_equal('"menu xyz.', @:) + call feedkeys(":menu Xmenu.A1.A1B1.xyz.\\\"\", 'xt') + call assert_equal('"menu Xmenu.A1.A1B1.xyz.', @:) + set wildmenu& unmenu Xmenu + + " Test for expanding popup menus with some hidden items + menu Xmenu.foo.A1 a1 + menu Xmenu.]bar bar + menu Xmenu.]baz.B1 b1 + menu Xmenu.-sep- : + call feedkeys(":popup Xmenu.\\\"\", 'xt') + call assert_equal('"popup Xmenu.foo', @:) + unmenu Xmenu + +endfunc + +" Test for the menu_info() function +func Test_menu_info() + " Define menus with various attributes + 10nnoremenu 10.10 T&est.F&oo :echo 'foo' + 10nmenu 10.20 T&est.B&ar:bar :echo 'bar' + 10nmenu