diff options
56 files changed, 164 insertions, 181 deletions
@@ -120,6 +120,7 @@ SRC_ALL = \ src/testdir/sautest/autoload/*.vim \ src/testdir/runtest.vim \ src/testdir/summarize.vim \ + src/testdir/check.vim \ src/testdir/shared.vim \ src/testdir/screendump.vim \ src/testdir/view_util.vim \ diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index 9e551c1e1c..eb014a95c2 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -65,6 +65,7 @@ NEW_TESTS = \ test_backspace_opt \ test_backup \ test_balloon \ + test_balloon_gui \ test_behave \ test_blob \ test_blockedit \ @@ -297,6 +298,7 @@ NEW_TESTS_RES = \ test_autoload.res \ test_backspace_opt.res \ test_balloon.res \ + test_balloon_gui.res \ test_blob.res \ test_blockedit.res \ test_breakindent.res \ diff --git a/src/testdir/check.vim b/src/testdir/check.vim new file mode 100644 index 0000000000..7f37f1c96e --- /dev/null +++ b/src/testdir/check.vim @@ -0,0 +1,23 @@ +" Command to check for the presence of a feature. +command -nargs=1 CheckFeature call CheckFeature(<f-args>) +func CheckFeature(name) + if !has(a:name) + throw 'Skipped: ' .. a:name .. ' feature missing' + endif +endfunc + +" Command to check for the presence of a working option. +command -nargs=1 CheckOption call CheckOption(<f-args>) +func CheckOption(name) + if !exists('+' .. a:name) + throw 'Skipped: ' .. a:name .. ' option not supported' + endif +endfunc + +" Command to check for the presence of a function. +command -nargs=1 CheckFunction call CheckFunction(<f-args>) +func CheckFunction(name) + if !exists('*' .. a:name) + throw 'Skipped: ' .. a:name .. ' function missing' + endif +endfunc diff --git a/src/testdir/test_arabic.vim b/src/testdir/test_arabic.vim index 450c6f98f5..b679ec4520 100644 --- a/src/testdir/test_arabic.vim +++ b/src/testdir/test_arabic.vim @@ -2,9 +2,8 @@ " NOTE: This just checks if the code works. If you know Arabic please add " functional tests that check the shaping works with real text. -if !has('arabic') - throw 'Skipped: arabic feature missing' -endif +source check.vim +CheckFeature arabic source view_util.vim diff --git a/src/testdir/test_balloon.vim b/src/testdir/test_balloon.vim index abf7d6944e..793eb3a571 100644 --- a/src/testdir/test_balloon.vim +++ b/src/testdir/test_balloon.vim @@ -1,11 +1,12 @@ " Tests for 'balloonevalterm'. +" A few tests only work in the terminal. -if !has('balloon_eval_term') - throw 'Skipped: balloon_eval_term feature missing' +if has('gui_running') + throw 'Skipped: only work in the terminal' endif -" A few tests only work in the terminal. -if !has('gui_running') +source check.vim +CheckFeature balloon_eval_term source screendump.vim if !CanRunVimInTerminal() @@ -56,24 +57,3 @@ func Test_balloon_eval_term_visual() call StopVimInTerminal(buf) call delete('XTest_beval_visual') endfunc - -endif - -" Tests that only work in the GUI -if has('gui_running') - -func Test_balloon_show_gui() - let msg = 'this this this this' - call balloon_show(msg) - call assert_equal(msg, balloon_gettext()) - sleep 10m - call balloon_show('') - - let msg = 'that that' - call balloon_show(msg) - call assert_equal(msg, balloon_gettext()) - sleep 10m - call balloon_show('') -endfunc - -endif diff --git a/src/testdir/test_balloon_gui.vim b/src/testdir/test_balloon_gui.vim new file mode 100644 index 0000000000..fd01309c15 --- /dev/null +++ b/src/testdir/test_balloon_gui.vim @@ -0,0 +1,22 @@ +" Tests for 'ballooneval' in the GUI. + +if !has('gui_running') + throw 'Skipped: only works in the GUI' +endif + +source check.vim +CheckFeature balloon_eval + +func Test_balloon_show_gui() + let msg = 'this this this this' + call balloon_show(msg) + call assert_equal(msg, balloon_gettext()) + sleep 10m + call balloon_show('') + + let msg = 'that that' + call balloon_show(msg) + call assert_equal(msg, balloon_gettext()) + sleep 10m + call balloon_show('') +endfunc diff --git a/src/testdir/test_crypt.vim b/src/testdir/test_crypt.vim index db100991ab..ab62d84708 100644 --- a/src/testdir/test_crypt.vim +++ b/src/testdir/test_crypt.vim @@ -1,8 +1,7 @@ " Tests for encryption. -if !has('cryptv') - throw 'Skipped, encryption feature missing' -endif +source check.vim +CheckFeature cryptv func Common_head_only(text) " This was crashing Vim diff --git a/src/testdir/test_cscope.vim b/src/testdir/test_cscope.vim index a3fcbd77b6..c776be1138 100644 --- a/src/testdir/test_cscope.vim +++ b/src/testdir/test_cscope.vim @@ -1,10 +1,11 @@ " Test for cscope commands. -if !has('cscope') || !has('quickfix') - throw 'Skipped, cscope or quickfix feature missing' -endif +source check.vim +CheckFeature cscope +CheckFeature quickfix + if !executable('cscope') - throw 'Skipped, cscope program missing' + throw 'Skipped: cscope program missing' endif func CscopeSetupOrClean(setup) diff --git a/src/testdir/test_digraph.vim b/src/testdir/test_digraph.vim index 92d4e479a7..6435c86fa4 100644 --- a/src/testdir/test_digraph.vim +++ b/src/testdir/test_digraph.vim @@ -1,8 +1,7 @@ " Tests for digraphs -if !has("digraphs") - throw 'Skipped, digraphs feature missing' -endif +source check.vim +CheckFeature digraphs func Put_Dig(chars) exe "norm! o\<c-k>".a:chars diff --git a/src/testdir/test_float_func.vim b/src/testdir/test_float_func.vim index 6340b538f5..f407f40eb0 100644 --- a/src/testdir/test_float_func.vim +++ b/src/testdir/test_float_func.vim @@ -1,8 +1,7 @@ " test float functions -if !has('float') - throw 'Skipped, float feature missing' -end +source check.vim +CheckFeature float func Test_abs() call assert_equal('1.23', string(abs(1.23))) diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim index d030a6ae6a..7f94e6a8d9 100644 --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -2,7 +2,7 @@ source shared.vim if !CanRunGui() - throw 'Skipped, cannot run GUI' + throw 'Skipped: cannot run GUI' endif source setup_gui.vim diff --git a/src/testdir/test_gui_init.vim b/src/testdir/test_gui_init.vim index a8eefa56b9..ecc8fc9efe 100644 --- a/src/testdir/test_gui_init.vim +++ b/src/testdir/test_gui_init.vim @@ -3,7 +3,7 @@ source shared.vim if !CanRunGui() - throw 'Skipped, cannot run GUI' + throw 'Skipped: cannot run GUI' endif source setup_gui.vim diff --git a/src/testdir/test_history.vim b/src/testdir/test_history.vim index 4b464137bb..215fc0a55a 100644 --- a/src/testdir/test_history.vim +++ b/src/testdir/test_history.vim @@ -1,8 +1,7 @@ " Tests for the history functions -if !has('cmdline_hist') - throw 'Skipped, cmdline_hist feature missing' -endif +source check.vim +CheckFeature cmdline_hist set history=7 diff --git a/src/testdir/test_langmap.vim b/src/testdir/test_langmap.vim index 4b260f8480..420ff0fe8a 100644 --- a/src/testdir/test_langmap.vim +++ b/src/testdir/test_langmap.vim @@ -1,8 +1,7 @@ " tests for 'langmap' -if !has('langmap') - throw 'Skipped, langmap feature missing' -endif +source check.vim +CheckFeature langmap func Test_langmap() new diff --git a/src/testdir/test_listlbr.vim b/src/testdir/test_listlbr.vim index 5af4133ec8..a2abc93b7e 100644 --- a/src/testdir/test_listlbr.vim +++ b/src/testdir/test_listlbr.vim @@ -3,12 +3,9 @@ set encoding=latin1 scriptencoding latin1 -if !exists("+linebreak") - throw 'Skipped, linebreak option missing' -endif -if !has("conceal") - throw 'Skipped, conceal feature missing' -endif +source check.vim +CheckOption linebreak +CheckFeature conceal source view_util.vim diff --git a/src/testdir/test_listlbr_utf8.vim b/src/testdir/test_listlbr_utf8.vim index 1154d6626b..ddce6f36d6 100644 --- a/src/testdir/test_listlbr_utf8.vim +++ b/src/testdir/test_listlbr_utf8.vim @@ -3,15 +3,10 @@ set encoding=utf-8 scriptencoding utf-8 -if !exists("+linebreak") - throw 'Skipped, linebreak option missing' -endif -if !has("conceal") - throw 'Skipped, conceal feature missing' -endif -if !has("signs") - throw 'Skipped, signs feature missing' -endif +source check.vim +CheckOption linebreak +CheckFeature conceal +CheckFeature signs source view_util.vim diff --git a/src/testdir/test_lua.vim b/src/testdir/test_lua.vim index 5d2f088e3f..65753dc4a6 100644 --- a/src/testdir/test_lua.vim +++ b/src/testdir/test_lua.vim @@ -1,8 +1,7 @@ " Tests for Lua. -if !has('lua') - throw 'Skipped, lua feature missing' -endif +source check.vim +CheckFeature lua func TearDown() " Run garbage collection after each test to exercise luaV_setref(). diff --git a/src/testdir/test_makeencoding.vim b/src/testdir/test_makeencoding.vim index 6de3c706f3..09d36eac9a 100644 --- a/src/testdir/test_makeencoding.vim +++ b/src/testdir/test_makeencoding.vim @@ -4,7 +4,7 @@ source shared.vim let s:python = PythonProg() if s:python == '' - throw 'Skipped, python program missing' + throw 'Skipped: python program missing' endif let s:script = 'test_makeencoding.py' diff --git a/src/testdir/test_matchadd_conceal.vim b/src/testdir/test_matchadd_conceal.vim index a7c8b06f53..6684378f66 100644 --- a/src/testdir/test_matchadd_conceal.vim +++ b/src/testdir/test_matchadd_conceal.vim @@ -1,8 +1,7 @@ " Test for matchadd() and conceal feature -if !has('conceal') - throw 'Skipped, conceal feature missing' -endif +source check.vim +CheckFeature conceal if !has('gui_running') && has('unix') set term=ansi diff --git a/src/testdir/test_matchadd_conceal_utf8.vim b/src/testdir/test_matchadd_conceal_utf8.vim index fb275777da..98ed2cbe60 100644 --- a/src/testdir/test_matchadd_conceal_utf8.vim +++ b/src/testdir/test_matchadd_conceal_utf8.vim @@ -1,8 +1,7 @@ " Test for matchadd() and conceal feature using utf-8. -if !has('conceal') - throw 'Skipped, conceal feature missing' -endif +source check.vim +CheckFeature conceal if !has('gui_running') && has('unix') set term=ansi diff --git a/src/testdir/test_memory_usage.vim b/src/testdir/test_memory_usage.vim index 519ac4b9a3..b51a110e01 100644 --- a/src/testdir/test_memory_usage.vim +++ b/src/testdir/test_memory_usage.vim @@ -1,15 +1,15 @@ " Tests for memory usage. -if !has('terminal') - throw 'Skipped, terminal feature missing' -endif +source check.vim +CheckFeature terminal + if has('gui_running') - throw 'Skipped, does not work in GUI' + throw 'Skipped: does not work in GUI' endif if execute('version') =~# '-fsanitize=[a-z,]*\<address\>' " Skip tests on Travis CI ASAN build because it's difficult to estimate " memory usage. - throw 'Skipped, does not work with ASAN' + throw 'Skipped: does not work with ASAN' endif source shared.vim @@ -20,7 +20,7 @@ endfunc if has('win32') if !executable('wmic') - throw 'Skipped, wmic program missing' + throw 'Skipped: wmic program missing' endif func s:memory_usage(pid) abort let cmd = printf('wmic process where processid=%d get WorkingSetSize', a:pid) @@ -28,13 +28,13 @@ if has('win32') endfunc elseif has('unix') if !executable('ps') - throw 'Skipped, ps program missing' + throw 'Skipped: ps program missing' endif func s:memory_usage(pid) abort return s:pick_nr(system('ps -o rss= -p ' . a:pid)) endfunc else - throw 'Skipped, not win32 or unix' + throw 'Skipped: not win32 or unix' endif " Wait for memory usage to level off. diff --git a/src/testdir/test_menu.vim b/src/testdir/test_menu.vim index 99f888af19..efbb982b04 100644 --- a/src/testdir/test_menu.vim +++ b/src/testdir/test_menu.vim @@ -1,8 +1,7 @@ " Test that the system menu can be loaded. -if !has('menu') - throw 'Skipped, menu feature missing' -endif +source check.vim +CheckFeature menu func Test_load_menu() try diff --git a/src/testdir/test_mksession.vim b/src/testdir/test_mksession.vim index ee2d148c67..e7aa25ca7a 100644 --- a/src/testdir/test_mksession.vim +++ b/src/testdir/test_mksession.vim @@ -3,9 +3,8 @@ set encoding=latin1 scriptencoding latin1 -if !has('mksession') - throw 'Skipped, mksession feature missing' -endif +source check.vim +CheckFeature mksession source shared.vim diff --git a/src/testdir/test_mksession_utf8.vim b/src/testdir/test_mksession_utf8.vim index 6bf5823ce8..7d9a909cac 100644 --- a/src/testdir/test_mksession_utf8.vim +++ b/src/testdir/test_mksession_utf8.vim @@ -3,9 +3,8 @@ set encoding=utf-8 scriptencoding utf-8 -if !has('mksession') - throw 'Skipped, mksession feature missing' -endif +source check.vim +CheckFeature mksession func Test_mksession_utf8() tabnew diff --git a/src/testdir/test_netbeans.vim b/src/testdir/test_netbeans.vim index 836bddff3c..690ac673c1 100644 --- a/src/testdir/test_netbeans.vim +++ b/src/testdir/test_netbeans.vim @@ -1,14 +1,13 @@ " Test the netbeans interface. -if !has('netbeans_intg') - throw 'Skipped, netbeans_intg feature missing' -endif +source check.vim +CheckFeature netbeans_intg source shared.vim let s:python = PythonProg() if s:python == '' - throw 'Skipped, python program missing' + throw 'Skipped: python program missing' endif " Run "testfunc" after sarting the server and stop the server afterwards. diff --git a/src/testdir/test_paste.vim b/src/testdir/test_paste.vim index ee69641538..a22e8e505e 100644 --- a/src/testdir/test_paste.vim +++ b/src/testdir/test_paste.vim @@ -2,10 +2,10 @@ " Bracketed paste only works with "xterm". Not in GUI or Windows console. if has('win32') - throw 'Skipped, does not work on MS-Windows' + throw 'Skipped: does not work on MS-Windows' endif if has('gui_running') - throw 'Skipped, does not work in the GUI' + throw 'Skipped: does not work in the GUI' endif set term=xterm diff --git a/src/testdir/test_perl.vim b/src/testdir/test_perl.vim index d38fc07982..8f23f2c136 100644 --- a/src/testdir/test_perl.vim +++ b/src/testdir/test_perl.vim @@ -1,8 +1,7 @@ " Tests for Perl interface -if !has('perl') - throw 'Skipped, perl feature missing' -end +source check.vim +CheckFeature perl " FIXME: RunTest don't see any error when Perl abort... perl $SIG{__WARN__} = sub { die "Unexpected warnings from perl: @_" }; diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index d9b0b295f7..a3f2046f4c 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -1,8 +1,7 @@ " Tests for popup windows -if !has('textprop') - throw 'Skipped: textprop feature missing' -endif +source check.vim +CheckFeature textprop source screendump.vim @@ -515,7 +514,7 @@ endfunc func Test_popup_time() if !has('timers') - throw 'Skipped, timer feature not supported' + throw 'Skipped: timer feature not supported' endif topleft vnew call setline(1, 'hello') @@ -1176,7 +1175,7 @@ endfunc func Test_notifications() if !has('timers') - throw 'Skipped, timer feature not supported' + throw 'Skipped: timer feature not supported' endif if !CanRunVimInTerminal() throw 'Skipped: cannot make screendumps' diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim index ddabe3a953..babed36dbd 100644 --- a/src/testdir/test_profile.vim +++ b/src/testdir/test_profile.vim @@ -1,8 +1,7 @@ " Test Vim profiler -if !has('profile') - throw 'Skipped, profile feature missing' -endif +source check.vim +CheckFeature profile func Test_profile_func() let lines =<< trim [CODE] diff --git a/src/testdir/test_prompt_buffer.vim b/src/testdir/test_prompt_buffer.vim index 5cf65d5135..58be50bcbf 100644 --- a/src/testdir/test_prompt_buffer.vim +++ b/src/testdir/test_prompt_buffer.vim @@ -1,8 +1,7 @@ " Tests for setting 'buftype' to "prompt" -if !has('channel') - throw 'Skipped, channel feature missing' -endif +source check.vim +CheckFeature channel source shared.vim source screendump.vim diff --git a/src/testdir/test_python2.vim b/src/testdir/test_python2.vim index 5b10852288..61cf959bad 100644 --- a/src/testdir/test_python2.vim +++ b/src/testdir/test_python2.vim @@ -1,9 +1,8 @@ " Test for python 2 commands. " TODO: move tests from test87.in here. -if !has('python') - throw 'Skipped, python feature missing' -endif +source check.vim +CheckFeature python func Test_pydo() " Check deleting lines does not trigger ml_get error. diff --git a/src/testdir/test_python3.vim b/src/testdir/test_python3.vim index e001360e75..7f48619209 100644 --- a/src/testdir/test_python3.vim +++ b/src/testdir/test_python3.vim @@ -1,9 +1,8 @@ " Test for python 3 commands. " TODO: move tests from test88.in here. -if !has('python3') - throw 'Skipped, python3 feature missing' -endif +source check.vim +CheckFeature python3 func Test_py3do() " Check deleting lines does not trigger an ml_get error. diff --git a/src/testdir/test_pyx2.vim b/src/testdir/test_pyx2.vim index 64bd579c26..40e93c227b 100644 --- a/src/testdir/test_pyx2.vim +++ b/src/testdir/test_pyx2.vim @@ -1,9 +1,8 @@ " Test for pyx* commands and functions with Python 2. set pyx=2 -if !has('python') - throw 'Skipped, python feature missing' -endif +source check.vim +CheckFeature python let s:py2pattern = '^2\.[0-7]\.\d\+' let s:py3pattern = '^3\.\d\+\.\d\+' diff --git a/src/testdir/test_pyx3.vim b/src/testdir/test_pyx3.vim index 1b7bdae793..5dfa6cd21c 100644 --- a/src/testdir/test_pyx3.vim +++ b/src/testdir/test_pyx3.vim @@ -1,9 +1,8 @@ " Test for pyx* commands and functions with Python 3. |