# HG changeset patch # User Bram Moolenaar # Date 1634418005 -7200 # Node ID 34b75c77a7bd6d83c03ea6d819b71490f1034195 # Parent 4cfcfd90ccdb9dba849dac5cccbbc4033e14b568 patch 8.2.3526: tests have clumsy check for X11 based GUI Commit: https://github.com/vim/vim/commit/40bd5a15405206b130d487af0ca61b5d9b5859f8 Author: Bram Moolenaar Date: Sat Oct 16 21:58:27 2021 +0100 patch 8.2.3526: tests have clumsy check for X11 based GUI Problem: Tests have clumsy check for X11 based GUI. Solution: Add CheckX11BasedGui. diff --git a/src/testdir/check.vim b/src/testdir/check.vim --- a/src/testdir/check.vim +++ b/src/testdir/check.vim @@ -217,6 +217,14 @@ func CheckNotAsan() endif endfunc +" Command to check for X11 based GUI +command CheckX11BasedGui call CheckX11BasedGui() +func CheckX11BasedGui() + if !g:x11_based_gui + throw 'Skipped: requires X11 based GUI' + endif +endfunc + " Command to check for satisfying any of the conditions. " e.g. CheckAnyOf Feature:bsd Feature:sun Linux command -nargs=+ CheckAnyOf call CheckAnyOf() diff --git a/src/testdir/setup_gui.vim b/src/testdir/setup_gui.vim --- a/src/testdir/setup_gui.vim +++ b/src/testdir/setup_gui.vim @@ -5,7 +5,6 @@ let g:x11_based_gui = has('gui_athena') " Reasons for 'skipped'. let g:not_supported = "Skipped: Feature/Option not supported by this GUI: " -let g:not_implemented = "Skipped: Test not implemented yet for this GUI" let g:not_hosted = "Skipped: Test not hosted by the system/environment" " For KDE set a font, empty 'guifont' may cause a hang. diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -61,11 +61,9 @@ func Test_colorscheme() endfunc func Test_getfontname_with_arg() - let skipped = '' + CheckX11BasedGui - if !g:x11_based_gui - let skipped = g:not_implemented - elseif has('gui_athena') || has('gui_motif') + if has('gui_athena') || has('gui_motif') " Invalid font name. The result should be an empty string. call assert_equal('', getfontname('notexist')) @@ -82,20 +80,14 @@ func Test_getfontname_with_arg() let fname = 'Bitstream Vera Sans Mono 12' call assert_equal(fname, getfontname(fname)) endif - - if !empty(skipped) - throw skipped - endif endfunc func Test_getfontname_without_arg() - let skipped = '' + CheckX11BasedGui let fname = getfontname() - if !g:x11_based_gui - let skipped = g:not_implemented - elseif has('gui_kde') + if has('gui_kde') " 'expected' is the value specified by SetUp() above. call assert_equal('Courier 10 Pitch/8/-1/5/50/0/0/0/0/0', fname) elseif has('gui_athena') || has('gui_motif') @@ -106,10 +98,6 @@ func Test_getfontname_without_arg() " 'expected' is DEFAULT_FONT of gui_gtk_x11.c. call assert_equal('Monospace 10', fname) endif - - if !empty(skipped) - throw skipped - endif endfunc func Test_getwinpos() @@ -120,48 +108,41 @@ func Test_getwinpos() endfunc func Test_quoteplus() - let g:test_is_flaky = 1 - let skipped = '' + CheckX11BasedGui - if !g:x11_based_gui - let skipped = g:not_supported . 'quoteplus' - else - let quoteplus_saved = @+ + let g:test_is_flaky = 1 + + let quoteplus_saved = @+ - let test_call = 'Can you hear me?' - let test_response = 'Yes, I can.' - let vim_exe = GetVimCommand() - let testee = 'VIMRUNTIME=' . $VIMRUNTIME . '; export VIMRUNTIME;' - \ . vim_exe . ' --noplugin --not-a-term -c ''%s''' - " Ignore the "failed to create input context" error. - let cmd = 'call test_ignore_error("E285") | ' - \ . 'gui -f | ' - \ . 'call feedkeys("' - \ . '\"+p' - \ . ':s/' . test_call . '/' . test_response . '/\' - \ . '\"+yis' - \ . ':q!\", "tx")' - let run_vimtest = printf(testee, cmd) + let test_call = 'Can you hear me?' + let test_response = 'Yes, I can.' + let vim_exe = GetVimCommand() + let testee = 'VIMRUNTIME=' . $VIMRUNTIME . '; export VIMRUNTIME;' + \ . vim_exe . ' --noplugin --not-a-term -c ''%s''' + " Ignore the "failed to create input context" error. + let cmd = 'call test_ignore_error("E285") | ' + \ . 'gui -f | ' + \ . 'call feedkeys("' + \ . '\"+p' + \ . ':s/' . test_call . '/' . test_response . '/\' + \ . '\"+yis' + \ . ':q!\", "tx")' + let run_vimtest = printf(testee, cmd) - " Set the quoteplus register to test_call, and another gvim will launched. - " Then, it first tries to paste the content of its own quotedplus register - " onto it. Second, it tries to substitute test_response for the pasted - " sentence. If the sentence is identical to test_call, the substitution - " should succeed. Third, it tries to yank the result of the substitution - " to its own quoteplus register, and last it quits. When system() - " returns, the content of the quoteplus register should be identical to - " test_response if those quoteplus registers are synchronized properly - " with/through the X11 clipboard. - let @+ = test_call - call system(run_vimtest) - call assert_equal(test_response, @+) + " Set the quoteplus register to test_call, and another gvim will launched. + " Then, it first tries to paste the content of its own quotedplus register + " onto it. Second, it tries to substitute test_response for the pasted + " sentence. If the sentence is identical to test_call, the substitution + " should succeed. Third, it tries to yank the result of the substitution + " to its own quoteplus register, and last it quits. When system() + " returns, the content of the quoteplus register should be identical to + " test_response if those quoteplus registers are synchronized properly + " with/through the X11 clipboard. + let @+ = test_call + call system(run_vimtest) + call assert_equal(test_response, @+) - let @+ = quoteplus_saved - endif - - if !empty(skipped) - throw skipped - endif + let @+ = quoteplus_saved endfunc func Test_set_background() @@ -333,8 +314,29 @@ func Test_set_guicursor() let &guicursor = guicursor_saved endfunc +func Test_set_guifont_errors() + if has('win32') + " Invalid font names are accepted in GTK GUI + call assert_fails('set guifont=xa1bc23d7f', 'E596:') + endif + + " This only works if 'renderoptions' exists and does not work for Windows XP + " and older. + if exists('+renderoptions') && windowsversion() !~ '^[345]\.' + " doing this four times used to cause a crash + set renderoptions=type:directx + for i in range(5) + set guifont= + endfor + set renderoptions= + for i in range(5) + set guifont= + endfor + endif +endfunc + func Test_set_guifont() - let skipped = '' + CheckX11BasedGui let guifont_saved = &guifont if has('xfontset') @@ -343,9 +345,7 @@ func Test_set_guifont() set guifontset= endif - if !g:x11_based_gui - let skipped = g:not_implemented - elseif has('gui_athena') || has('gui_motif') + if has('gui_athena') || has('gui_motif') " Non-empty font list with invalid font names. " " This test is twofold: (1) It checks if the command fails as expected @@ -384,33 +384,10 @@ func Test_set_guifont() call assert_equal('Monospace 10', getfontname()) endif - if has('win32') - " Invalid font names are accepted in GTK GUI - call assert_fails('set guifont=xa1bc23d7f', 'E596:') - endif - - " This only works if 'renderoptions' exists and does not work for Windows XP - " and older. - if exists('+renderoptions') && windowsversion() !~ '^[345]\.' - " doing this four times used to cause a crash - set renderoptions=type:directx - for i in range(5) - set guifont= - endfor - set renderoptions= - for i in range(5) - set guifont= - endfor - endif - if has('xfontset') let &guifontset = guifontset_saved endif let &guifont = guifont_saved - - if !empty(skipped) - throw skipped - endif endfunc func Test_set_guifontset() @@ -485,12 +462,11 @@ func Test_set_guifontset() endfunc func Test_set_guifontwide() - call assert_fails('set guifontwide=*', 'E533:') - let skipped = '' + CheckX11BasedGui - if !g:x11_based_gui - let skipped = g:not_implemented - elseif has('gui_gtk') + call assert_fails('set guifontwide=*', 'E533:') + + if has('gui_gtk') let guifont_saved = &guifont let guifontwide_saved = &guifontwide @@ -561,51 +537,31 @@ func Test_set_guifontwide() let &encoding = encoding_saved endif endif - - if !empty(skipped) - throw skipped - endif endfunc func Test_set_guiligatures() - let skipped = '' + CheckX11BasedGui - if !g:x11_based_gui - let skipped = g:not_supported . 'guiligatures' - else - if has('gui_gtk') || has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3') - " Try correct value - set guiligatures=<>=ab - call assert_equal("<>=ab", &guiligatures) - " Try to throw error - try - set guiligatures=<>=šab - call assert_report("'set guiligatures=<>=šab should have failed") - catch - call assert_exception('E1243:') - endtry - endif - endif - - if !empty(skipped) - throw skipped + if has('gui_gtk') || has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3') + " Try correct value + set guiligatures=<>=ab + call assert_equal("<>=ab", &guiligatures) + " Try to throw error + try + set guiligatures=<>=šab + call assert_report("'set guiligatures=<>=šab should have failed") + catch + call assert_exception('E1243:') + endtry endif endfunc func Test_set_guiheadroom() - let skipped = '' + CheckX11BasedGui - if !g:x11_based_gui - let skipped = g:not_supported . 'guiheadroom' - else - " Since this script is to be read together with '-U NONE', the default - " value must be preserved. - call assert_equal(50, &guiheadroom) - endif - - if !empty(skipped) - throw skipped - endif + " Since this script is to be read together with '-U NONE', the default + " value must be preserved. + call assert_equal(50, &guiheadroom) endfunc func Test_set_guioptions() diff --git a/src/testdir/test_gui_init.vim b/src/testdir/test_gui_init.vim --- a/src/testdir/test_gui_init.vim +++ b/src/testdir/test_gui_init.vim @@ -22,19 +22,11 @@ call test_ignore_error('E285:') gui -f func Test_set_guiheadroom() - let skipped = '' + CheckX11BasedGui - if !g:x11_based_gui - let skipped = g:not_supported . 'guiheadroom' - else - " The 'expected' value must be consistent with the value specified with - " gui_init.vim. - call assert_equal(0, &guiheadroom) - endif - - if !empty(skipped) - throw skipped - endif + " The 'expected' value must be consistent with the value specified with + " gui_init.vim. + call assert_equal(0, &guiheadroom) endfunc func Test_set_guioptions_for_M() @@ -44,19 +36,11 @@ func Test_set_guioptions_for_M() endfunc func Test_set_guioptions_for_p() - let skipped = '' + CheckX11BasedGui - if !g:x11_based_gui - let skipped = g:not_supported . '''p'' of guioptions' - else - sleep 200ms - " Check if the 'p' option is included. - call assert_match('.*p.*', &guioptions) - endif - - if !empty(skipped) - throw skipped - endif + sleep 200ms + " Check if the 'p' option is included. + call assert_match('.*p.*', &guioptions) endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3526, +/**/ 3525, /**/ 3524,