]> granicus.if.org Git - vim/commitdiff
patch 8.0.1253: still too many old style tests v8.0.1253
authorBram Moolenaar <Bram@vim.org>
Thu, 2 Nov 2017 20:04:47 +0000 (21:04 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 2 Nov 2017 20:04:47 +0000 (21:04 +0100)
Problem:    Still too many old style tests.
Solution:   Convert a few more tests to new style. (Yegappan Lakshmanan,
            closes #2272)

20 files changed:
src/Makefile
src/testdir/Make_all.mak
src/testdir/Make_amiga.mak
src/testdir/Make_dos.mak
src/testdir/Make_ming.mak
src/testdir/Make_vms.mms
src/testdir/main.aap
src/testdir/test12.in [deleted file]
src/testdir/test12.ok [deleted file]
src/testdir/test40.in [deleted file]
src/testdir/test40.ok [deleted file]
src/testdir/test45.in [deleted file]
src/testdir/test45.ok [deleted file]
src/testdir/test83.in [deleted file]
src/testdir/test83.ok [deleted file]
src/testdir/test_autocmd.vim
src/testdir/test_fold.vim
src/testdir/test_swap.vim [new file with mode: 0644]
src/testdir/test_tagjump.vim
src/version.c

index 92589560d126c267cd90cabbd0f9d15d3207032a..e55e830ef5f4b1a5eb1659e7b1ed0a136cc22984 100644 (file)
@@ -2103,13 +2103,13 @@ test1 \
        test_listchars \
        test_search_mbyte \
        test_wordcount \
-       test3 test11 test12 test14 test15 test17 \
+       test3 test11 test14 test15 test17 \
        test29 test30 test36 test37 test39 \
-       test40 test42 test44 test45 test48 test49 \
+       test42 test44 test48 test49 \
        test50 test52 test55 test59 \
        test64 test68 test69 \
-       test70 test72 test73 test77 \
-       test83 test85 test86 test87 test88 \
+       test70 test72 test73 \
+       test85 test86 test87 test88 \
        test94 test95 test99 test108:
        cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
 
index 6edca56c786a4ccca29c10313f18391f4e545500..4d618c60769154927c4677f7b6315c35b34c8440 100644 (file)
@@ -20,10 +20,8 @@ SCRIPTS_ALL = \
        test36.out \
        test37.out \
        test39.out \
-       test40.out \
        test42.out \
        test44.out \
-       test45.out \
        test48.out \
        test55.out \
        test64.out \
@@ -58,7 +56,6 @@ SCRIPTS_MORE1 = \
 
 # Tests that run on most systems, but not on Amiga and DOS/Windows.
 SCRIPTS_MORE2 = \
-       test12.out \
        test49.out
 
 
@@ -68,7 +65,6 @@ SCRIPTS_MORE4 = \
        test30.out \
        test59.out \
        test72.out \
-       test83.out
 
 
 # Tests specifically for MS-Windows.
@@ -79,7 +75,7 @@ SCRIPTS_WIN32 = test50.out
 SCRIPTS_GUI =
 
 
-# Tests using runtest.vim.vim.
+# Tests using runtest.vim
 # Keep test_alot*.res as the last one, sort the others.
 NEW_TESTS = test_arabic.res \
            test_arglist.res \
@@ -164,6 +160,7 @@ NEW_TESTS = test_arabic.res \
            test_startup_utf8.res \
            test_stat.res \
            test_substitute.res \
+           test_swap.res \
            test_syntax.res \
            test_system.res \
            test_tab.res \
index 4a6bd9f66fe30c81dd8b3ee180b78b4f57b628a6..d894001325f09ba19f8e9c2e04559f4cfcd6555e 100644 (file)
@@ -13,7 +13,6 @@ include Make_all.mak
 # test2                "\\tmp" doesn't work
 # test10       'errorformat' is different
 # test11       "cat" doesn't work properly
-# test12       can't unlink a swap file
 # test52       only for Win32
 # test85       no Lua interface
 # test86, 87   no Python interface
index 52162bccde77c454ed4be53a0cf2a5a8821f610b..6cd8de6463df9c29e09e25a6624bfa8b53f6af94 100644 (file)
@@ -12,7 +12,6 @@ default: nongui
 # Omitted:
 # test2                "\\tmp" doesn't work.
 # test10       'errorformat' is different
-# test12       can't unlink a swap file
 # test49       fails in various ways
 # test97       \{ and \$ are not escaped characters.
 
index 11346854fddcfe12beeeb01cfafef04ce9a56301..f2bd8b740505317e217672d8f6181d0531fc275a 100644 (file)
@@ -31,7 +31,6 @@ include Make_all.mak
 # Omitted:
 # test2                "\\tmp" doesn't work.
 # test10       'errorformat' is different
-# test12       can't unlink a swap file
 # test97       \{ and \$ are not escaped characters
 
 SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE1) $(SCRIPTS_MORE4) $(SCRIPTS_WIN32)
index b76c2305d487fb51c053c6adc1b980750f910840..03975899fdb1ca57ed87fa229eb439027a5f0577 100644 (file)
@@ -75,13 +75,13 @@ VIMPROG = <->vim.exe
 
 SCRIPT = test1.out test3.out \
        test14.out test15.out \
-       test29.out test30.out \
-       test36.out test37.out test39.out \
-       test40.out test42.out test44.out test45.out \
-       test48.out test49.out test55.out \
+       test29.out \
+       test30.out test36.out test37.out test39.out \
+       test42.out test44.out test48.out test49.out \
+       test55.out \
        test64.out test68.out test69.out \
        test72.out test77a.out test88.out \
-       test94.out test95.out test99.out test108.out\
+       test94.out test95.out test99.out test108.out \
        test_autocmd_option.out \
        test_breakindent.out \
        test_changelist.out \
@@ -107,7 +107,6 @@ SCRIPT = test1.out test3.out \
 #
 # test72: bug - Vim hangs at :rename (while rename works well otherwise)
 # test78: bug - Vim dies at :recover Xtest 
-# test83: ?
 # test85: no Lua interface
 # test89: bug - findfile() does not work on VMS (just in the current directory) 
 # test102: Just ODS-5 supports space and special chars in the filename.
@@ -119,7 +118,7 @@ GUI_OPTION = -g
 .ENDIF
 
 .IFDEF WANT_UNIX
-SCRIPT_UNIX = test10.out test12.out test17.out test27.out test49.out test73.out
+SCRIPT_UNIX = test10.out test17.out test27.out test49.out test73.out
 .ENDIF
 
 .IFDEF WANT_WIN
@@ -146,10 +145,6 @@ SCRIPT_GZIP = test11.out
 SCRIPT_GDIFF = test47.out
 .ENDIF
 
-.IFDEF HAVE_ICONV
-SCRIPT_ICONV = test83.out
-.ENDIF
-
 .IFDEF HAVE_LUA
 SCRIPT_LUA = test85.out
 .ENDIF
@@ -179,7 +174,7 @@ SCRIPT_PYTHON = test86.out test87.out
        -@ if "''F$SEARCH("Xtest.*")'"    .NES. "" then delete/noconfirm/nolog Xtest.*.*
 
 all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_ODS5) $(SCRIPT_GZIP) \
-    $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) $(SCRIPT_ICONV) $(SCRIPT_LUA) $(SCRIPT_PYTHON) nolog 
+    $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) $(SCRIPT_LUA) $(SCRIPT_PYTHON) nolog 
        -@ write sys$output " "
        -@ write sys$output "-----------------------------------------------"
        -@ write sys$output "                All done"
index 14afaace63b2c788a47d12ec3154131de430fb1f..89eae41e00b7b861dfad5dd28aa6219274aff7da 100644 (file)
@@ -6,12 +6,12 @@ VimProg ?= ../vim
 
 Scripts = test1.out test2.out test3.out test6.out
                test11.out
-               test12.out  test13.out test14.out test15.out test17.out
+               test13.out test14.out test15.out test17.out
                test18.out test21.out
                test27.out test29.out test30.out
                test36.out test37.out
-               test39.out test40.out test42.out
-               test44.out test45.out test46.out test47.out
+               test39.out test42.out
+               test44.out test46.out test47.out
                test48.out test49.out test74.out
 
 ScriptsGUI = test16.out
diff --git a/src/testdir/test12.in b/src/testdir/test12.in
deleted file mode 100644 (file)
index 46e9c45..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-Tests for 'directory' option.
-- ".", in same dir as file
-- "./dir", in directory relative to file
-- "dir", in directory relative to current dir
-
-STARTTEST
-:so small.vim
-:set nocompatible viminfo+=nviminfo
-:set dir=.,~
-:/start of testfile/,/end of testfile/w! Xtest1
-:" do an ls of the current dir to find the swap file (should not be there)
-:if has("unix")
-:  !ls .X*.swp >test.out
-:else
-:  r !ls X*.swp >test.out
-:endif
-:!echo first line >>test.out
-:e Xtest1
-:if has("unix")
-:" Do an ls of the current dir to find the swap file, remove the leading dot
-:" to make the result the same for all systems.
-:  r!ls .X*.swp
-:  s/\.*X/X/
-:  .w >>test.out
-:  undo
-:else
-:  !ls X*.swp >>test.out
-:endif
-:!echo under Xtest1.swp >>test.out
-:!mkdir Xtest2
-:set dir=./Xtest2,.,~
-:e Xtest1
-:!ls X*.swp >>test.out
-:!echo under under >>test.out
-:!ls Xtest2 >>test.out
-:!echo under Xtest1.swp >>test.out
-:!mkdir Xtest.je
-:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
-:set dir=Xtest.je,~
-:e Xtest2/Xtest3
-:swap
-:!ls Xtest2 >>test.out
-:!echo under Xtest3 >>test.out
-:!ls Xtest.je >>test.out
-:!echo under Xtest3.swp >>test.out
-:qa!
-ENDTEST
-
-start of testfile
-line 2 Abcdefghij
-line 3 Abcdefghij
-end of testfile
diff --git a/src/testdir/test12.ok b/src/testdir/test12.ok
deleted file mode 100644 (file)
index 605623b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-first line
-Xtest1.swp
-under Xtest1.swp
-under under
-Xtest1.swp
-under Xtest1.swp
-Xtest3
-under Xtest3
-Xtest3.swp
-under Xtest3.swp
diff --git a/src/testdir/test40.in b/src/testdir/test40.in
deleted file mode 100644 (file)
index d92a18f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-Test for "*Cmd" autocommands
-
-STARTTEST
-:so small.vim
-:/^start/,$w! Xxx              " write lines below to Xxx
-:au BufReadCmd XtestA 0r Xxx|$del
-:e XtestA                      " will read text of Xxd instead
-:au BufWriteCmd XtestA call append(line("$"), "write")
-:w                             " will append a line to the file
-:r XtestA                      " should not read anything
-:                              " now we have:
-:                              " 1     start of Xxx
-:                              " 2             test40
-:                              " 3     end of Xxx
-:                              " 4     write
-:au FileReadCmd XtestB '[r Xxx
-:2r XtestB                     " will read Xxx below line 2 instead
-:                              " 1     start of Xxx
-:                              " 2             test40
-:                              " 3     start of Xxx
-:                              " 4             test40
-:                              " 5     end of Xxx
-:                              " 6     end of Xxx
-:                              " 7     write
-:au FileWriteCmd XtestC '[,']copy $
-4GA1\e
-:4,5w XtestC                   " will copy lines 4 and 5 to the end
-:r XtestC                      " should not read anything
-:                              " 1     start of Xxx
-:                              " 2             test40
-:                              " 3     start of Xxx
-:                              " 4             test401
-:                              " 5     end of Xxx
-:                              " 6     end of Xxx
-:                              " 7     write
-:                              " 8             test401
-:                              " 9     end of Xxx
-:au FILEAppendCmd XtestD '[,']w! test.out
-:w >>XtestD                    " will write all lines to test.out
-:$r XtestD                     " should not read anything
-:$w >>test.out                 " append "end of Xxx" to test.out
-:au BufReadCmd XtestE 0r test.out|$del
-:sp XtestE                     " split window with test.out
-5Goasdf\e\17\17:"
-:au BufWriteCmd XtestE w! test.out
-:wall                          " will write other window to test.out
-:                              " 1     start of Xxx
-:                              " 2             test40
-:                              " 3     start of Xxx
-:                              " 4             test401
-:                              " 5     end of Xxx
-:                              " 6     asdf
-:                              " 7     end of Xxx
-:                              " 8     write
-:                              " 9             test401
-:                              " 10    end of Xxx
-:                              " 11    end of Xxx
-:qa!
-ENDTEST
-
-start of Xxx
-       test40
-end of Xxx
diff --git a/src/testdir/test40.ok b/src/testdir/test40.ok
deleted file mode 100644 (file)
index b650139..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-start of Xxx
-       test40
-start of Xxx
-       test401
-end of Xxx
-asdf
-end of Xxx
-write
-       test401
-end of Xxx
-end of Xxx
diff --git a/src/testdir/test45.in b/src/testdir/test45.in
deleted file mode 100644 (file)
index c6d7c50..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-Tests for folding. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:set belloff=all
-:" We also need the +syntax feature here.
-:if !has("syntax")
-   e! test.ok
-   w! test.out
-   qa!
-:endif
-:" basic test if a fold can be created, opened, moving to the end and closed
-/^1
-zf2j:call append("$", "manual " . getline(foldclosed(".")))
-zo:call append("$", foldclosed("."))
-]z:call append("$", getline("."))
-zc:call append("$", getline(foldclosed(".")))
-:" test folding with markers.
-:set fdm=marker fdl=1 fdc=3
-/^5
-:call append("$", "marker " . foldlevel("."))
-[z:call append("$", foldlevel("."))
-jo{{ \er{jj:call append("$", foldlevel("."))
-kYpj:call append("$", foldlevel("."))
-:" test folding with indent
-:set fdm=indent sw=2
-/^2 b
-i  \ejI    \e:call append("$", "indent " . foldlevel("."))
-k:call append("$", foldlevel("."))
-:set sw&
-:" test syntax folding
-:set fdm=syntax fdl=0
-:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
-:syn region Fd1 start="ee" end="ff" fold contained
-:syn region Fd2 start="gg" end="hh" fold contained
-:syn region Fd3 start="commentstart" end="commentend" fold contained
-Gzk:call append("$", "folding " . getline("."))
-k:call append("$", getline("."))
-jAcommentstart  \eAcommentend\e:set fdl=1
-3j:call append("$", getline("."))
-:set fdl=0
-zO\fj:call append("$", getline("."))
-:" test expression folding
-:fun Flvl()
-  let l = getline(v:lnum)
-  if l =~ "bb$"
-    return 2
-  elseif l =~ "gg$"
-    return "s1"
-  elseif l =~ "ii$"
-    return ">2"
-  elseif l =~ "kk$"
-    return "0"
-  endif
-  return "="
-endfun
-:set fdm=expr fde=Flvl()
-/bb$
-:call append("$", "expr " . foldlevel("."))
-/hh$
-:call append("$", foldlevel("."))
-/ii$
-:call append("$", foldlevel("."))
-/kk$
-:call append("$", foldlevel("."))
-:/^last/+1,$w! test.out
-:delfun Flvl
-:new
-iTest fdm=indent and :move bug END
-line2
-       Test fdm=indent START
-       line3
-       line4\e
-:set fdm=indent
-:1m1
-2jzc:m0
-:%w >> test.out
-:qa!
-ENDTEST
-
-1 aa
-2 bb
-3 cc
-4 dd {{{
-5 ee {{{ }}}
-6 ff }}}
-7 gg
-8 hh
-9 ii
-a jj
-b kk
-last
diff --git a/src/testdir/test45.ok b/src/testdir/test45.ok
deleted file mode 100644 (file)
index 0f25e62..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-manual 1 aa
--1
-3 cc
-1 aa
-marker 2
-1
-1
-0
-indent 2
-1
-folding 9 ii
-    3 cc
-7 gg
-8 hh
-expr 2
-1
-2
-0
-       Test fdm=indent START
-       line3
-       line4
-Test fdm=indent and :move bug END
-line2
diff --git a/src/testdir/test83.in b/src/testdir/test83.in
deleted file mode 100644 (file)
index f24c1b8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-Tests for tag search with !_TAG_FILE_ENCODING.
-
-STARTTEST
-:so mbyte.vim
-:set enc=utf8
-:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
-: e! test.ok
-: w! test.out
-: qa!
-:endif
-:
-:/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
-:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
-:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
-:/^tags1$/+1,/^tags1-end$/-1w! Xtags1
-:
-ggdG:
-:
-:call setline('.', 'Results of test83')
-:
-:" case1:
-:new
-:set tags=Xtags1
-:let v:errmsg = ''
-:tag abcdefghijklmnopqrs
-:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'
-: close
-: put ='case1: failed'
-:else
-: close
-: put ='case1: ok'
-:endif
-:
-:" case2:
-:new
-:set tags=test83-tags2
-:let v:errmsg = ''
-:tag /.BC
-:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
-: close
-: put ='case2: failed'
-:else
-: close
-: put ='case2: ok'
-:endif
-:
-:" case3:
-:new
-:set tags=test83-tags3
-:let v:errmsg = ''
-:tag abc50
-:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
-: close
-: put ='case3: failed'
-:else
-: close
-: put ='case3: ok'
-:endif
-:close
-:
-:wq! test.out
-ENDTEST
-
-text for tags1
-abcdefghijklmnopqrs
-
-text for tags2
-ABC
-
-text for tags3
-ABC
-
-tags1
-!_TAG_FILE_ENCODING    utf-8   //
-abcdefghijklmnopqrs    Xtags1.txt      /abcdefghijklmnopqrs
-tags1-end
diff --git a/src/testdir/test83.ok b/src/testdir/test83.ok
deleted file mode 100644 (file)
index 61a1a04..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Results of test83
-case1: ok
-case2: ok
-case3: ok
index dbf7d20b558fea4a62836c870874a937149d8df6..3f072a588048a63dda4de2e9b1096d3226069a7e 100644 (file)
@@ -1,6 +1,5 @@
 " Tests for autocommands
 
-
 func! s:cleanup_buffers() abort
   for bnr in range(1, bufnr('$'))
     if bufloaded(bnr) && bufnr('%') != bnr
@@ -917,3 +916,84 @@ func Test_buflocal_autocmd()
   enew
   unlet g:bname
 endfunc
+
+" Test for "*Cmd" autocommands
+func Test_Cmd_Autocmds()
+  call writefile(['start of Xxx', "\tabc2", 'end of Xxx'], 'Xxx')
+
+  enew!
+  au BufReadCmd XtestA 0r Xxx|$del
+  edit XtestA                  " will read text of Xxd instead
+  call assert_equal('start of Xxx', getline(1))
+
+  au BufWriteCmd XtestA call append(line("$"), "write")
+  write                                " will append a line to the file
+  call assert_equal('write', getline('$'))
+  call assert_fails('read XtestA', 'E484')     " should not read anything
+  call assert_equal('write', getline(4))
+
+  " now we have:
+  " 1  start of Xxx
+  " 2          abc2
+  " 3  end of Xxx
+  " 4  write
+
+  au FileReadCmd XtestB '[r Xxx
+  2r XtestB                    " will read Xxx below line 2 instead
+  call assert_equal('start of Xxx', getline(3))
+
+  " now we have:
+  " 1  start of Xxx
+  " 2          abc2
+  " 3  start of Xxx
+  " 4          abc2
+  " 5  end of Xxx
+  " 6  end of Xxx
+  " 7  write
+
+  au FileWriteCmd XtestC '[,']copy $
+  normal 4GA1
+  4,5w XtestC                  " will copy lines 4 and 5 to the end
+  call assert_equal("\tabc21", getline(8))
+  call assert_fails('r XtestC', 'E484')        " should not read anything
+  call assert_equal("end of Xxx", getline(9))
+
+  " now we have:
+  " 1  start of Xxx
+  " 2          abc2
+  " 3  start of Xxx
+  " 4          abc21
+  " 5  end of Xxx
+  " 6  end of Xxx
+  " 7  write
+  " 8          abc21
+  " 9  end of Xxx
+
+  let g:lines = []
+  au FileAppendCmd XtestD call extend(g:lines, getline(line("'["), line("']")))
+  w >>XtestD                   " will add lines to 'lines'
+  call assert_equal(9, len(g:lines))
+  call assert_fails('$r XtestD', 'E484')       " should not read anything
+  call assert_equal(9, line('$'))
+  call assert_equal('end of Xxx', getline('$'))
+
+  au BufReadCmd XtestE 0r Xxx|$del
+  sp XtestE                    " split window with test.out
+  call assert_equal('end of Xxx', getline(3))
+
+  let g:lines = []
+  exe "normal 2Goasdf\<Esc>\<C-W>\<C-W>"
+  au BufWriteCmd XtestE call extend(g:lines, getline(0, '$'))
+  wall                         " will write other window to 'lines'
+  call assert_equal(4, len(g:lines), g:lines)
+  call assert_equal('asdf', g:lines[2])
+
+  au! BufReadCmd
+  au! BufWriteCmd
+  au! FileReadCmd
+  au! FileWriteCmd
+  au! FileAppendCmd
+  %bwipe!
+  call delete('Xxx')
+  enew!
+endfunc
index b6ba99c56fc234043d2c5239589df3c9ca02581c..5ebf38f7a5693d88c88c34ec9061d9d9b4fa168c 100644 (file)
@@ -460,3 +460,170 @@ func Test_foldtext_recursive()
   call assert_equal(3, foldclosedend(2))
   bwipe!
 endfunc
+
+" Various fold related tests
+
+" Basic test if a fold can be created, opened, moving to the end and closed
+func Test_fold_manual()
+  enew!
+  set fdm=manual
+
+  let content = ['1 aa', '2 bb', '3 cc']
+  call append(0, content)
+  call cursor(1, 1)
+  normal zf2j
+  call assert_equal('1 aa', getline(foldclosed('.')))
+  normal zo
+  call assert_equal(-1, foldclosed('.'))
+  normal ]z
+  call assert_equal('3 cc', getline('.'))
+  normal zc
+  call assert_equal('1 aa', getline(foldclosed('.')))
+
+  set fdm&
+  enew!
+endfunc
+
+" test folding with markers.
+func Test_fold_marker()
+  enew!
+  set fdm=marker fdl=1 fdc=3
+
+  let content = ['4 dd {{{', '5 ee {{{ }}}', '6 ff }}}']
+  call append(0, content)
+  call cursor(2, 1)
+  call assert_equal(2, foldlevel('.'))
+  normal [z
+  call assert_equal(1, foldlevel('.'))
+  exe "normal jo{{ \<Esc>r{jj"
+  call assert_equal(1, foldlevel('.'))
+  normal kYpj
+  call assert_equal(0, foldlevel('.'))
+
+  set fdm& fdl& fdc&
+  enew!
+endfunc
+
+" test folding with indent
+func Test_fold_indent()
+  enew!
+  set fdm=indent sw=2
+
+  let content = ['1 aa', '2 bb', '3 cc']
+  call append(0, content)
+  call cursor(2, 1)
+  exe "normal i  \<Esc>jI    "
+  call assert_equal(2, foldlevel('.'))
+  normal k
+  call assert_equal(1, foldlevel('.'))
+
+  set fdm& sw&
+  enew!
+endfunc
+
+" test syntax folding
+func Test_fold_syntax()
+  if !has('syntax')
+    return
+  endif
+
+  enew!
+  set fdm=syntax fdl=0
+
+  syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+  syn region Fd1 start="ee" end="ff" fold contained
+  syn region Fd2 start="gg" end="hh" fold contained
+  syn region Fd3 start="commentstart" end="commentend" fold contained
+  let content = ['3 cc', '4 dd {{{', '5 ee {{{ }}}', '{{{{', '6 ff }}}',
+             \ '6 ff }}}', '7 gg', '8 hh', '9 ii']
+  call append(0, content)
+  normal Gzk
+  call assert_equal('9 ii', getline('.'))
+  normal k
+  call assert_equal('3 cc', getline('.'))
+  exe "normal jAcommentstart   \<Esc>Acommentend"
+  set fdl=1
+  normal 3j
+  call assert_equal('7 gg', getline('.'))
+  set fdl=0
+  exe "normal zO\<C-L>j"
+  call assert_equal('8 hh', getline('.'))
+  syn clear Fd1 Fd2 Fd3 Hup
+
+  set fdm& fdl&
+  enew!
+endfunc
+
+func Flvl()
+  let l = getline(v:lnum)
+  if l =~ "bb$"
+    return 2
+  elseif l =~ "gg$"
+    return "s1"
+  elseif l =~ "ii$"
+    return ">2"
+  elseif l =~ "kk$"
+    return "0"
+  endif
+  return "="
+endfun
+
+" test expression folding
+func Test_fold_expr()
+  enew!
+  set fdm=expr fde=Flvl()
+
+  let content = ['1 aa',
+             \ '2 bb',
+             \ '3 cc',
+             \ '4 dd {{{commentstart  commentend',
+             \ '5 ee {{{ }}}',
+             \ '{{{',
+             \ '6 ff }}}',
+             \ '6 ff }}}',
+             \ '  7 gg',
+             \ '    8 hh',
+             \ '9 ii',
+             \ 'a jj',
+             \ 'b kk']
+  call append(0, content)
+  call cursor(1, 1)
+  exe "normal /bb$\<CR>"
+  call assert_equal(2, foldlevel('.'))
+  exe "normal /hh$\<CR>"
+  call assert_equal(1, foldlevel('.'))
+  exe "normal /ii$\<CR>"
+  call assert_equal(2, foldlevel('.'))
+  exe "normal /kk$\<CR>"
+  call assert_equal(0, foldlevel('.'))
+
+  set fdm& fde&
+  enew!
+endfunc
+
+" Bug with fdm=indent and moving folds
+" Moving a fold a few times, messes up the folds below the moved fold.
+" Fixed by 7.4.700
+func Test_fold_move()
+  enew!
+  set fdm=indent sw=2 fdl=0
+
+  let content = ['', '', 'Line1', '  Line2', '  Line3',
+             \ 'Line4', '  Line5', '  Line6',
+             \ 'Line7', '  Line8', '  Line9']
+  call append(0, content)
+  normal zM
+  call cursor(4, 1)
+  move 2
+  move 1
+  call assert_equal(7, foldclosed(7))
+  call assert_equal(8, foldclosedend(7))
+  call assert_equal(0, foldlevel(9))
+  call assert_equal(10, foldclosed(10))
+  call assert_equal(11, foldclosedend(10))
+  call assert_equal('+--  2 lines: Line2', foldtextresult(2))
+  call assert_equal('+--  2 lines: Line8', foldtextresult(10))
+
+  set fdm& sw& fdl&
+  enew!
+endfunc
diff --git a/src/testdir/test_swap.vim b/src/testdir/test_swap.vim
new file mode 100644 (file)
index 0000000..245e1f1
--- /dev/null
@@ -0,0 +1,48 @@
+" Tests for the swap feature
+
+" Tests for 'directory' option.
+func Test_swap_directory()
+  if !has("unix")
+    return
+  endif
+  let content = ['start of testfile',
+             \ 'line 2 Abcdefghij',
+             \ 'line 3 Abcdefghij',
+             \ 'end of testfile']
+  call writefile(content, 'Xtest1')
+
+  "  '.', swap file in the same directory as file
+  set dir=.,~
+
+  " Verify that the swap file doesn't exist in the current directory
+  call assert_equal([], glob(".Xtest1*.swp", 1, 1, 1))
+  edit Xtest1
+  let swfname = split(execute("swapname"))[0]
+  call assert_equal([swfname], glob(swfname, 1, 1, 1))
+
+  " './dir', swap file in a directory relative to the file
+  set dir=./Xtest2,.,~
+
+  call mkdir("Xtest2")
+  edit Xtest1
+  call assert_equal([], glob(swfname, 1, 1, 1))
+  let swfname = "Xtest2/Xtest1.swp"
+  call assert_equal(swfname, split(execute("swapname"))[0])
+  call assert_equal([swfname], glob("Xtest2/*", 1, 1, 1))
+
+  " 'dir', swap file in directory relative to the current dir
+  set dir=Xtest.je,~
+
+  call mkdir("Xtest.je")
+  call writefile(content, 'Xtest2/Xtest3')
+  edit Xtest2/Xtest3
+  call assert_equal(["Xtest2/Xtest3"], glob("Xtest2/*", 1, 1, 1))
+  let swfname = "Xtest.je/Xtest3.swp"
+  call assert_equal(swfname, split(execute("swapname"))[0])
+  call assert_equal([swfname], glob("Xtest.je/*", 1, 1, 1))
+
+  set dir&
+  call delete("Xtest1")
+  call delete("Xtest2", "rf")
+  call delete("Xtest.je", "rf")
+endfunc
index dbab8d9e266fa16177339e3f4d8aca25f4078cae..0e51098eb9838fc8dd05bf3cf2560afeb5e629f8 100644 (file)
@@ -174,4 +174,59 @@ func Test_tag_symbolic()
   %bwipe!
 endfunc
 
+" Tests for tag search with !_TAG_FILE_ENCODING.
+" Depends on the test83-tags2 and test83-tags3 files.
+func Test_tag_file_encoding()
+  if has('vms')
+    return
+  endif
+
+  if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+    return
+  endif
+
+  let save_enc = &encoding
+  set encoding=utf8
+
+  let content = ['text for tags1', 'abcdefghijklmnopqrs']
+  call writefile(content, 'Xtags1.txt')
+  let content = ['text for tags2', 'ABC']
+  call writefile(content, 'Xtags2.txt')
+  let content = ['text for tags3', 'ABC']
+  call writefile(content, 'Xtags3.txt')
+  let content = ['!_TAG_FILE_ENCODING  utf-8   //', 'abcdefghijklmnopqrs       Xtags1.txt      /abcdefghijklmnopqrs']
+  call writefile(content, 'Xtags1')
+
+  " case1:
+  new
+  set tags=Xtags1
+  tag abcdefghijklmnopqrs
+  call assert_equal('Xtags1.txt', expand('%:t'))
+  call assert_equal('abcdefghijklmnopqrs', getline('.'))
+  close
+
+  " case2:
+  new
+  set tags=test83-tags2
+  tag /.BC
+  call assert_equal('Xtags2.txt', expand('%:t'))
+  call assert_equal('ABC', getline('.'))
+  close
+
+  " case3:
+  new
+  set tags=test83-tags3
+  tag abc50
+  call assert_equal('Xtags3.txt', expand('%:t'))
+  call assert_equal('ABC', getline('.'))
+  close
+
+  set tags&
+  let &encoding = save_enc
+  call delete('Xtags1.txt')
+  call delete('Xtags2.txt')
+  call delete('Xtags3.txt')
+  call delete('Xtags1')
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index 59ecefecf3768fdb95f4dcb22a541aabe1379da5..059510462b7abf744290afc3f009e93c6263d79e 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1253,
 /**/
     1252,
 /**/