summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-11-02 21:04:47 +0100
committerBram Moolenaar <Bram@vim.org>2017-11-02 21:04:47 +0100
commit430dc5d360166ca5bb6a73f2c87ae53e09282ecb (patch)
tree476135bdc6d06c93ae3ab9baa27e50d35c2a7796
parent8889a5c305e69aa49fd08036e624e365097a5b7b (diff)
patch 8.0.1253: still too many old style testsv8.0.1253
Problem: Still too many old style tests. Solution: Convert a few more tests to new style. (Yegappan Lakshmanan, closes #2272)
-rw-r--r--src/Makefile8
-rw-r--r--src/testdir/Make_all.mak7
-rw-r--r--src/testdir/Make_amiga.mak1
-rw-r--r--src/testdir/Make_dos.mak1
-rw-r--r--src/testdir/Make_ming.mak1
-rw-r--r--src/testdir/Make_vms.mms19
-rw-r--r--src/testdir/main.aap6
-rw-r--r--src/testdir/test12.in52
-rw-r--r--src/testdir/test12.ok10
-rw-r--r--src/testdir/test40.in63
-rw-r--r--src/testdir/test40.ok11
-rw-r--r--src/testdir/test45.in92
-rw-r--r--src/testdir/test45.ok23
-rw-r--r--src/testdir/test83.in76
-rw-r--r--src/testdir/test83.ok4
-rw-r--r--src/testdir/test_autocmd.vim82
-rw-r--r--src/testdir/test_fold.vim167
-rw-r--r--src/testdir/test_swap.vim48
-rw-r--r--src/testdir/test_tagjump.vim55
-rw-r--r--src/version.c2
20 files changed, 369 insertions, 359 deletions
diff --git a/src/Makefile b/src/Makefile
index 92589560d1..e55e830ef5 100644
--- 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
index 6edca56c78..4d618c6076 100644
--- 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
index 4a6bd9f66f..d894001325 100644
--- 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
index 52162bccde..6cd8de6463 100644
--- 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
index 11346854fd..f2bd8b7405 100644
--- 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
index b76c2305d4..03975899fd 100644
--- 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
index 14afaace63..89eae41e00 100644
--- 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
index 46e9c45b80..0000000000
--- 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
index 605623b117..0000000000
--- 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
index d92a18f3d0..0000000000
--- 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
index b6501394f9..0000000000
--- 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
index c6d7c5064a..0000000000
--- 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
index 0f25e6218a..0000000000
--- 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
index f24c1b8358..0000000000
--- 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
index 61a1a04a18..0000000000
--- 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
index dbf7d20b55..3f072a5880 100644
--- 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\<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
diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim
index b6ba99c56f..5ebf38f7a5 100644
--- 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{{ \<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
index 0000000000..245e1f18bb
--- /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
index dbab8d9e26..0e51098eb9 100644
--- 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
index 59ecefecf3..059510462b 100644
--- 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,