Mercurial > vim
diff src/testdir/test_popupwin.vim @ 22174:ea87cd1fac75 v8.2.1636
patch 8.2.1636: get stuck if a popup filter causes an error
Commit: https://github.com/vim/vim/commit/6defa7bf0a8935cc44f3dc12e9c87bbb40f190b7
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Sep 8 22:06:44 2020 +0200
patch 8.2.1636: get stuck if a popup filter causes an error
Problem: Get stuck if a popup filter causes an error.
Solution: Check whether the function can be called and does not cause an
error. (closes #6902)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 08 Sep 2020 22:15:03 +0200 |
parents | ff21e2962490 |
children | 0e231e8e70f8 |
line wrap: on
line diff
--- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -3516,7 +3516,44 @@ func Test_popupwin_filter_close_ctrl_c() call VerifyScreenDump(buf, 'Test_popupwin_ctrl_c', {}) call StopVimInTerminal(buf) - call delete('XtestPopupCorners') + call delete('XtestPopupCtrlC') +endfunc + +func Test_popupwin_filter_close_wrong_name() + CheckScreendump + + let lines =<< trim END + call popup_create('one two three...', {'filter': 'NoSuchFunc'}) + END + call writefile(lines, 'XtestPopupWrongName') + + let buf = RunVimInTerminal('-S XtestPopupWrongName', #{rows: 10}) + + call term_sendkeys(buf, "j") + call VerifyScreenDump(buf, 'Test_popupwin_wrong_name', {}) + + call StopVimInTerminal(buf) + call delete('XtestPopupWrongName') +endfunc + +func Test_popupwin_filter_close_three_errors() + CheckScreendump + + let lines =<< trim END + set cmdheight=2 + call popup_create('one two three...', {'filter': 'filter'}) + END + call writefile(lines, 'XtestPopupThreeErrors') + + let buf = RunVimInTerminal('-S XtestPopupThreeErrors', #{rows: 10}) + + call term_sendkeys(buf, "jj") + call VerifyScreenDump(buf, 'Test_popupwin_three_errors_1', {}) + call term_sendkeys(buf, "j") + call VerifyScreenDump(buf, 'Test_popupwin_three_errors_2', {}) + + call StopVimInTerminal(buf) + call delete('XtestPopupThreeErrors') endfunc func Test_popupwin_atcursor_far_right()