changeset 24126:51ba4b49d7f9 v8.2.2604

patch 8.2.2604: GUI-specific command line arguments not tested Commit: https://github.com/vim/vim/commit/240309c9bfa8a0d2f154712f8e0dd33589f181d3 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 14 16:20:37 2021 +0100 patch 8.2.2604: GUI-specific command line arguments not tested Problem: GUI-specific command line arguments not tested. Solution: Add tests for several arguments. (Dominique Pell?, closes https://github.com/vim/vim/issues/7962)
author Bram Moolenaar <Bram@vim.org>
date Sun, 14 Mar 2021 16:30:02 +0100
parents b616f39b8989
children 8c03eefca0c1
files src/testdir/test_startup.vim src/version.c
diffstat 2 files changed, 146 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_startup.vim
+++ b/src/testdir/test_startup.vim
@@ -109,9 +109,8 @@ func Test_pack_in_rtp_when_plugins_run()
 endfunc
 
 func Test_help_arg()
-  if !has('unix') && has('gui_running')
-    throw 'Skipped: does not work with gvim on MS-Windows'
-  endif
+  CheckNotMSWindows
+
   if RunVim([], [], '--help >Xtestout')
     let lines = readfile('Xtestout')
     call assert_true(len(lines) > 20)
@@ -408,6 +407,134 @@ func Test_A_F_H_arg()
   call delete('Xtestout')
 endfunc
 
+" Test the --echo-wid argument (for GTK GUI only).
+func Test_echo_wid()
+  CheckCanRunGui
+  CheckFeature gui_gtk
+
+  if RunVim([], [], '-g --echo-wid -cq >Xtest_echo_wid')
+    let lines = readfile('Xtest_echo_wid')
+    call assert_equal(1, len(lines))
+    call assert_match('^WID: \d\+$', lines[0])
+  endif
+
+  call delete('Xtest_echo_wid')
+endfunction
+
+" Test the -reverse and +reverse arguments (for GUI only).
+func Test_reverse()
+  CheckCanRunGui
+  CheckNotMSWindows
+
+  let after =<< trim [CODE]
+    call writefile([&background], "Xtest_reverse")
+    qall
+  [CODE]
+  if RunVim([], after, '-f -g -reverse')
+    let lines = readfile('Xtest_reverse')
+    call assert_equal(['dark'], lines)
+  endif
+  if RunVim([], after, '-f -g +reverse')
+    let lines = readfile('Xtest_reverse')
+    call assert_equal(['light'], lines)
+  endif
+
+  call delete('Xtest_reverse')
+endfunc
+
+" Test the -background and -foreground arguments (for GUI only).
+func Test_background_foreground()
+  CheckCanRunGui
+  CheckNotMSWindows
+
+  " Is there a better way to check the effect of -background & -foreground
+  " other than merely looking at &background (dark or light)?
+  let after =<< trim [CODE]
+    call writefile([&background], "Xtest_fg_bg")
+    qall
+  [CODE]
+  if RunVim([], after, '-f -g -background darkred -foreground yellow')
+    let lines = readfile('Xtest_fg_bg')
+    call assert_equal(['dark'], lines)
+  endif
+  if RunVim([], after, '-f -g -background ivory -foreground darkgreen')
+    let lines = readfile('Xtest_fg_bg')
+    call assert_equal(['light'], lines)
+  endif
+
+  call delete('Xtest_fg_bg')
+endfunc
+
+" Test the -font argument (for GUI only).
+func Test_font()
+  CheckCanRunGui
+  CheckNotMSWindows
+
+  if has('gui_gtk')
+    let font = 'Courier 14'
+  elseif has('gui_motif') || has('gui_athena')
+    let font = '-misc-fixed-bold-*'
+  else
+    throw 'Skipped: test does not set a valid font for this GUI'
+  endif
+
+  let after =<< trim [CODE]
+    call writefile([&guifont], "Xtest_font")
+    qall
+  [CODE]
+
+  if RunVim([], after, '--nofork -g -font "' .. font .. '"')
+    let lines = readfile('Xtest_font')
+    call assert_equal([font], lines)
+  endif
+
+  call delete('Xtest_font')
+endfunc
+
+" Test the -geometry argument (for GUI only).
+func Test_geometry()
+  CheckCanRunGui
+  CheckNotMSWindows
+
+  if has('gui_motif') || has('gui_athena')
+    " FIXME: With GUI Athena or Motif, the value of getwinposx(),
+    "        getwinposy() and getwinpos() do not match exactly the
+    "        value given in -geometry. Why?
+    "        So only check &columns and &lines for those GUIs.
+    let after =<< trim [CODE]
+      call writefile([&columns, &lines], "Xtest_geometry")
+      qall
+    [CODE]
+    if RunVim([], after, '-f -g -geometry 31x13+41+43')
+      let lines = readfile('Xtest_geometry')
+      call assert_equal(['31', '13'], lines)
+    endif
+  else
+    let after =<< trim [CODE]
+      call writefile([&columns, &lines, getwinposx(), getwinposy(), string(getwinpos())], "Xtest_geometry")
+      qall
+    [CODE]
+    if RunVim([], after, '-f -g -geometry 31x13+41+43')
+      let lines = readfile('Xtest_geometry')
+      call assert_equal(['31', '13', '41', '43', '[41, 43]'], lines)
+    endif
+  endif
+
+  call delete('Xtest_geometry')
+endfunc
+
+" Test the -iconic argument (for GUI only).
+func Test_iconic()
+  CheckCanRunGui
+  CheckNotMSWindows
+
+  call RunVim([], [], '-f -g -iconic -cq')
+
+  " TODO: currently only start vim iconified, but does not
+  "       check that vim is iconified. How could this be checked?
+endfunc
+
+
 func Test_invalid_args()
   " must be able to get the output of Vim.
   CheckUnix
@@ -1042,16 +1169,11 @@ func Test_progname()
   \                'vimdiff', 'gvimdiff']
 
   for progname in prognames
-    if empty($DISPLAY)
-      if progname =~# 'g'
-        " Can't run gvim, gview (etc.) if $DISPLAY is not setup.
-        continue
-      endif
-      if has('gui') && (progname ==# 'evim' || progname ==# 'eview')
-        " evim or eview will start the GUI if there is gui support.
-        " So don't try to start them either if $DISPLAY is not setup.
-        continue
-      endif
+    let run_with_gui = (progname =~# 'g') || (has('gui') && (progname ==# 'evim' || progname ==# 'eview'))
+
+    if empty($DISPLAY) && run_with_gui
+      " Can't run gvim, gview  (etc.) if $DISPLAY is not setup.
+      continue
     endif
 
     exe 'silent !ln -s -f ' ..exepath(GetVimProg()) .. ' Xprogname/' .. progname
@@ -1066,7 +1188,15 @@ func Test_progname()
     if progname =~# 'g' && !has('gui')
       call assert_equal("E25: GUI cannot be used: Not enabled at compile time\n", stdout_stderr, progname)
     else
-      call assert_equal('', stdout_stderr, progname)
+      " GUI motif can output some warnings like this:
+      "   Warning:
+      "       Name: subMenu
+      "       Class: XmCascadeButton
+      "       Illegal mnemonic character;  Could not convert X KEYSYM to a keycode
+      " So don't check that stderr is empty with GUI Motif.
+      if run_with_gui && !has('gui_motif')
+        call assert_equal('', stdout_stderr, progname)
+      endif
       call assert_equal(expectations[progname], readfile('Xprogname_out'), progname)
     endif
 
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2604,
+/**/
     2603,
 /**/
     2602,