changeset 16564:6d9461653dc5 v8.1.1285

patch 8.1.1285: test17 is old style commit https://github.com/vim/vim/commit/f0ab01f6d868164ed0bb247b6f7b152e6929ef18 Author: Bram Moolenaar <Bram@vim.org> Date: Mon May 6 22:00:00 2019 +0200 patch 8.1.1285: test17 is old style Problem: Test17 is old style. Solution: Turn into new style test. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/4347)
author Bram Moolenaar <Bram@vim.org>
date Mon, 06 May 2019 22:15:05 +0200
parents e3f4ce013a0f
children 1d94fdfbe2a3
files src/Makefile src/testdir/Make_all.mak src/testdir/Make_vms.mms src/testdir/test17.in src/testdir/test17.ok src/testdir/test17a.in src/testdir/test_checkpath.vim src/testdir/test_gf.vim src/version.c
diffstat 9 files changed, 145 insertions(+), 175 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile
+++ b/src/Makefile
@@ -2175,7 +2175,7 @@ test_libvterm:
 # These do not depend on the executable, compile it when needed.
 test1 \
 	test_eval \
-	test3 test17 \
+	test3 \
 	test29 test30 test37 test39 \
 	test42 test44 test48 test49 \
 	test52 test59 \
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -44,7 +44,6 @@ SCRIPTS_MORE2 = \
 
 # Tests that run on most systems, but not on VMS
 SCRIPTS_MORE4 = \
-	test17.out \
 	test30.out \
 	test59.out \
 	test72.out \
@@ -82,6 +81,7 @@ NEW_TESTS = \
 	test_channel \
 	test_charsearch \
 	test_charsearch_utf8 \
+	test_checkpath \
 	test_cindent \
 	test_clientserver \
 	test_close_count \
@@ -302,6 +302,7 @@ NEW_TESTS_RES = \
 	test_changelist.res \
 	test_channel.res \
 	test_charsearch.res \
+	test_checkpath.res \
 	test_cindent.res \
 	test_clientserver.res \
 	test_close_count.res \
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -83,7 +83,6 @@ SCRIPT = test1.out test3.out \
        test_eval.out
 
 # Known problems:
-# test17: ?
 #
 # test30: bug, most probably - a problem around mac format
 #
@@ -102,7 +101,7 @@ GUI_OPTION = -g
 .ENDIF
 
 .IFDEF WANT_UNIX
-SCRIPT_UNIX = test10.out test17.out test27.out test49.out
+SCRIPT_UNIX = test10.out test27.out test49.out
 .ENDIF
 
 .IFDEF WANT_WIN
deleted file mode 100644
--- a/src/testdir/test17.in
+++ /dev/null
@@ -1,135 +0,0 @@
-Tests for:
-- "gf" on ${VAR},
-- ":checkpath!" with various 'include' settings.
-
-STARTTEST
-:so small.vim
-:if has("ebcdic")
-: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
-:else
-: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
-:endif
-:"
-:if has("unix")
-:let $CDIR = "."
-/CDIR
-:else
-:if has("amiga")
-:let $TDIR = "/testdir"
-:else
-:let $TDIR = "."
-:endif
-/TDIR
-:endif
-:" Dummy writing for making that sure gf doesn't fail even if the current
-:" file is modified. It can be occurred when executing the following command
-:" directly on Windows without fixing the 'fileformat':
-:"  > nmake -f Make_dos.mak test17.out
-:w! test.out
-gf
-:set ff=unix
-:w! test.out
-:brewind
-ENDTEST
-
-	${CDIR}/test17a.in
-	$TDIR/test17a.in
-
-STARTTEST
-:" check for 'include' without \zs or \ze
-:lang C
-:call delete("./Xbase.a")
-:call delete("Xdir1", "rf")
-:!mkdir Xdir1
-:!mkdir "Xdir1/dir2"
-:e! Xdir1/dir2/foo.a
-i#include   "bar.a":
-:w
-:e Xdir1/dir2/bar.a
-i#include      "baz.a":
-:w
-:e Xdir1/dir2/baz.a
-i#include            "foo.a":
-:w
-:e Xbase.a
-:set path=Xdir1/dir2
-i#include    <foo.a>:
-:w
-:redir! >>test.out
-:checkpath!
-:redir END
-:brewind
-ENDTEST
-
-STARTTEST
-:" check for 'include' with \zs and \ze
-:call delete("./Xbase.b")
-:call delete("Xdir1", "rf")
-:!mkdir Xdir1
-:!mkdir "Xdir1/dir2"
-:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
-:function! DotsToSlashes()
-:  return substitute(v:fname, '\.', '/', 'g') . '.b'
-:endfunction
-:let &includeexpr='DotsToSlashes()'
-:e! Xdir1/dir2/foo.b
-i%inc   /bar/:
-:w
-:e Xdir1/dir2/bar.b
-i%inc      /baz/:
-:w
-:e Xdir1/dir2/baz.b
-i%inc            /foo/:
-:w
-:e Xbase.b
-:set path=Xdir1/dir2
-i%inc    /foo/:
-:w
-:redir! >>test.out
-:checkpath!
-:redir END
-:brewind
-ENDTEST
-
-STARTTEST
-:" check for 'include' with \zs and no \ze
-:call delete("./Xbase.c")
-:call delete("Xdir1", "rf")
-:!mkdir Xdir1
-:!mkdir "Xdir1/dir2"
-:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
-:function! StripNewlineChar()
-:  if v:fname =~ '\n$'
-:    return v:fname[:-2]
-:  endif
-:  return v:fname
-:endfunction
-:let &includeexpr='StripNewlineChar()'
-:e! Xdir1/dir2/foo.c
-i%inc   bar.c:
-:w
-:e Xdir1/dir2/bar.c
-i%inc      baz.c:
-:w
-:e Xdir1/dir2/baz.c
-i%inc            foo.c:
-:w
-:e Xdir1/dir2/FALSE.c
-i%inc            foo.c:
-:w
-:e Xbase.c
-:set path=Xdir1/dir2
-i%inc    FALSE.c foo.c:
-:w
-:redir! >>test.out
-:checkpath!
-:redir END
-:brewind
-:" change "\" to "/" for Windows and fix 'fileformat'
-:e test.out
-:%s#\\#/#g
-:set ff&
-:w
-:q
-ENDTEST
-
deleted file mode 100644
--- a/src/testdir/test17.ok
+++ /dev/null
@@ -1,33 +0,0 @@
-This file is just to test "gf" in test 17.
-The contents is not important.
-Just testing!
-
-
---- Included files in path ---
-Xdir1/dir2/foo.a
-Xdir1/dir2/foo.a -->
-  Xdir1/dir2/bar.a
-  Xdir1/dir2/bar.a -->
-    Xdir1/dir2/baz.a
-    Xdir1/dir2/baz.a -->
-      "foo.a"  (Already listed)
-
-
---- Included files in path ---
-Xdir1/dir2/foo.b
-Xdir1/dir2/foo.b -->
-  Xdir1/dir2/bar.b
-  Xdir1/dir2/bar.b -->
-    Xdir1/dir2/baz.b
-    Xdir1/dir2/baz.b -->
-      foo  (Already listed)
-
-
---- Included files in path ---
-Xdir1/dir2/foo.c
-Xdir1/dir2/foo.c -->
-  Xdir1/dir2/bar.c
-  Xdir1/dir2/bar.c -->
-    Xdir1/dir2/baz.c
-    Xdir1/dir2/baz.c -->
-      foo.c  (Already listed)
deleted file mode 100644
--- a/src/testdir/test17a.in
+++ /dev/null
@@ -1,3 +0,0 @@
-This file is just to test "gf" in test 17.
-The contents is not important.
-Just testing!
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_checkpath.vim
@@ -0,0 +1,104 @@
+" Tests for the :checkpath command
+
+" Test for 'include' without \zs or \ze
+func Test_checkpath1()
+  call mkdir("Xdir1/dir2", "p")
+  call writefile(['#include    "bar.a"'], 'Xdir1/dir2/foo.a')
+  call writefile(['#include    "baz.a"'], 'Xdir1/dir2/bar.a')
+  call writefile(['#include    "foo.a"'], 'Xdir1/dir2/baz.a')
+  call writefile(['#include    <foo.a>'], 'Xbase.a')
+
+  edit Xbase.a
+  set path=Xdir1/dir2
+  let res = split(execute("checkpath!"), "\n")
+  call assert_equal([
+	      \ '--- Included files in path ---',
+	      \ 'Xdir1/dir2/foo.a',
+	      \ 'Xdir1/dir2/foo.a -->',
+	      \ '  Xdir1/dir2/bar.a',
+	      \ '  Xdir1/dir2/bar.a -->',
+	      \ '    Xdir1/dir2/baz.a',
+	      \ '    Xdir1/dir2/baz.a -->',
+	      \ '      "foo.a"  (Already listed)'], res)
+
+  enew
+  call delete("./Xbase.a")
+  call delete("Xdir1", "rf")
+  set path&
+endfunc
+
+func DotsToSlashes()
+  return substitute(v:fname, '\.', '/', 'g') . '.b'
+endfunc
+
+" Test for 'include' with \zs and \ze
+func Test_checkpath2()
+  call mkdir("Xdir1/dir2", "p")
+  call writefile(['%inc    /bar/'], 'Xdir1/dir2/foo.b')
+  call writefile(['%inc    /baz/'], 'Xdir1/dir2/bar.b')
+  call writefile(['%inc    /foo/'], 'Xdir1/dir2/baz.b')
+  call writefile(['%inc    /foo/'], 'Xbase.b')
+
+  let &include='^\s*%inc\s*/\zs[^/]\+\ze'
+  let &includeexpr='DotsToSlashes()'
+
+  edit Xbase.b
+  set path=Xdir1/dir2
+  let res = split(execute("checkpath!"), "\n")
+  call assert_equal([
+	      \ '--- Included files in path ---',
+	      \ 'Xdir1/dir2/foo.b',
+	      \ 'Xdir1/dir2/foo.b -->',
+	      \ '  Xdir1/dir2/bar.b',
+	      \ '  Xdir1/dir2/bar.b -->',
+	      \ '    Xdir1/dir2/baz.b',
+	      \ '    Xdir1/dir2/baz.b -->',
+	      \ '      foo  (Already listed)'], res)
+
+  enew
+  call delete("./Xbase.b")
+  call delete("Xdir1", "rf")
+  set path&
+  set include&
+  set includeexpr&
+endfunc
+
+func StripNewlineChar()
+  if v:fname =~ '\n$'
+    return v:fname[:-2]
+  endif
+  return v:fname
+endfunc
+
+" Test for 'include' with \zs and no \ze
+func Test_checkpath3()
+  call mkdir("Xdir1/dir2", "p")
+  call writefile(['%inc    bar.c'], 'Xdir1/dir2/foo.c')
+  call writefile(['%inc    baz.c'], 'Xdir1/dir2/bar.c')
+  call writefile(['%inc    foo.c'], 'Xdir1/dir2/baz.c')
+  call writefile(['%inc    foo.c'], 'Xdir1/dir2/FALSE.c')
+  call writefile(['%inc    FALSE.c foo.c'], 'Xbase.c')
+
+  let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
+  let &includeexpr='StripNewlineChar()'
+
+  edit Xbase.c
+  set path=Xdir1/dir2
+  let res = split(execute("checkpath!"), "\n")
+  call assert_equal([
+	      \ '--- Included files in path ---',
+	      \ 'Xdir1/dir2/foo.c',
+	      \ 'Xdir1/dir2/foo.c -->',
+	      \ '  Xdir1/dir2/bar.c',
+	      \ '  Xdir1/dir2/bar.c -->',
+	      \ '    Xdir1/dir2/baz.c',
+	      \ '    Xdir1/dir2/baz.c -->',
+	      \ '      foo.c  (Already listed)'], res)
+
+  enew
+  call delete("./Xbase.c")
+  call delete("Xdir1", "rf")
+  set path&
+  set include&
+  set includeexpr&
+endfunc
--- a/src/testdir/test_gf.vim
+++ b/src/testdir/test_gf.vim
@@ -64,3 +64,38 @@ func Test_gF()
   bwipe Xfile
   bwipe Xfile2
 endfunc
+
+" Test for invoking 'gf' on a ${VAR} variable
+func Test_gf()
+  if has("ebcdic")
+    set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
+  else
+    set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
+  endif
+
+  call writefile(["Test for gf command"], "Xtest1")
+  if has("unix")
+    call writefile(["    ${CDIR}/Xtest1"], "Xtestgf")
+  else
+    call writefile(["    $TDIR/Xtest1"], "Xtestgf")
+  endif
+  new Xtestgf
+  if has("unix")
+    let $CDIR = "."
+    /CDIR
+  else
+    if has("amiga")
+      let $TDIR = "/testdir"
+    else
+      let $TDIR = "."
+    endif
+    /TDIR
+  endif
+
+  normal gf
+  call assert_equal('Xtest1', fnamemodify(bufname(''), ":t"))
+  close!
+
+  call delete('Xtest1')
+  call delete('Xtestgf')
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1285,
+/**/
     1284,
 /**/
     1283,