# HG changeset patch # User Christian Brabandt # Date 1509653705 -3600 # Node ID 0b6c09957b43859879e60f983a183d1810d6f0d0 # Parent 8b706a156136c19374a1d5e916f325f10c526607 patch 8.0.1253: still too many old style tests commit https://github.com/vim/vim/commit/430dc5d360166ca5bb6a73f2c87ae53e09282ecb Author: Bram Moolenaar Date: Thu Nov 2 21:04:47 2017 +0100 patch 8.0.1253: still too many old style tests Problem: Still too many old style tests. Solution: Convert a few more tests to new style. (Yegappan Lakshmanan, closes #2272) diff --git a/src/Makefile b/src/Makefile --- a/src/Makefile +++ b/src/Makefile @@ -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) diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -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 \ diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -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 diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -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. diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -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) diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -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" diff --git a/src/testdir/main.aap b/src/testdir/main.aap --- a/src/testdir/main.aap +++ b/src/testdir/main.aap @@ -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 --- a/src/testdir/test12.in +++ /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 --- a/src/testdir/test12.ok +++ /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 --- a/src/testdir/test40.in +++ /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 -: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:" -: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 --- a/src/testdir/test40.ok +++ /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 --- a/src/testdir/test45.in +++ /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{{ r{jj:call append("$", foldlevel(".")) -kYpj:call append("$", foldlevel(".")) -:" test folding with indent -:set fdm=indent sw=2 -/^2 b -i jI :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 Acommentend:set fdl=1 -3j:call append("$", getline(".")) -:set fdl=0 -zO j: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 -: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 --- a/src/testdir/test45.ok +++ /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 --- a/src/testdir/test83.in +++ /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 --- a/src/testdir/test83.ok +++ /dev/null @@ -1,4 +0,0 @@ -Results of test83 -case1: ok -case2: ok -case3: ok diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim --- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -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\\\" + 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 diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim --- a/src/testdir/test_fold.vim +++ b/src/testdir/test_fold.vim @@ -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{{ \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 \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 \Acommentend" + set fdl=1 + normal 3j + call assert_equal('7 gg', getline('.')) + set fdl=0 + exe "normal zO\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$\" + call assert_equal(2, foldlevel('.')) + exe "normal /hh$\" + call assert_equal(1, foldlevel('.')) + exe "normal /ii$\" + call assert_equal(2, foldlevel('.')) + exe "normal /kk$\" + 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 --- /dev/null +++ b/src/testdir/test_swap.vim @@ -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 diff --git a/src/testdir/test_tagjump.vim b/src/testdir/test_tagjump.vim --- a/src/testdir/test_tagjump.vim +++ b/src/testdir/test_tagjump.vim @@ -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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1253, +/**/ 1252, /**/ 1251,