changeset 12662:15f0f9f16cd9 v8.0.1209

patch 8.0.1209: still too many old style tests commit https://github.com/vim/vim/commit/53f0c962394dc6bc66d5b0762af9434e672d1b25 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Oct 22 14:23:59 2017 +0200 patch 8.0.1209: 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 #2230)
author Christian Brabandt <cb@256bit.org>
date Sun, 22 Oct 2017 14:30:07 +0200
parents 9ee086df7d78
children f6e4a66dc55f
files 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/Makefile src/testdir/main.aap src/testdir/test34.in src/testdir/test34.ok src/testdir/test54.in src/testdir/test54.ok src/testdir/test8.in src/testdir/test8.ok src/testdir/test_autocmd.vim src/testdir/test_autoformat_join.in src/testdir/test_autoformat_join.ok src/testdir/test_join.vim src/testdir/test_user_func.vim src/version.c
diffstat 20 files changed, 221 insertions(+), 234 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile
+++ b/src/Makefile
@@ -2088,9 +2088,9 @@ run_memfile_test: $(MEMFILE_TEST_TARGET)
 run_message_test: $(MESSAGE_TEST_TARGET)
 	$(VALGRIND) ./$(MESSAGE_TEST_TARGET) || exit 1; echo $* passed;
 
-# Run individual OLD style test, assuming that Vim was already compiled.
+# Run individual OLD style test.
+# These do not depend on the executable, compile it when needed.
 test1 \
-	test_autoformat_join \
 	test_changelist \
 	test_close_count \
 	test_erasebackword \
@@ -2100,20 +2100,19 @@ test1 \
 	test_listchars \
 	test_search_mbyte \
 	test_wordcount \
-	test3 test8 \
-	test11 test12 test14 test15 test17 test19 \
+	test3 test11 test12 test14 test15 test17 test19 \
 	test20 test25 test28 test29 \
-	test30 test32 test34 test36 test37 test38 test39 \
+	test30 test32 test36 test37 test38 test39 \
 	test40 test42 test44 test45 test48 test49 \
-	test50 test52 test54 test55 test59 \
+	test50 test52 test55 test59 \
 	test64 test66 test68 test69 \
 	test70 test72 test73 test77 test79 \
 	test83 test85 test86 test87 test88 \
-	test94 test95 test99 \
-	test108:
+	test94 test95 test99 test108:
 	cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
 
-# Run individual NEW style test, assuming that Vim was already compiled.
+# Run individual NEW style test.
+# These do not depend on the executable, compile it when needed.
 test_arglist \
 	test_arabic \
 	test_assert \
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -14,14 +14,12 @@ SCRIPTS_FIRST = \
 # Tests that run on all systems.
 SCRIPTS_ALL = \
 	test3.out \
-	test8.out \
 	test14.out \
 	test15.out \
 	test19.out \
 	test20.out \
 	test28.out \
 	test29.out \
-	test34.out \
 	test36.out \
 	test37.out \
 	test38.out \
@@ -44,7 +42,6 @@ SCRIPTS_ALL = \
 	test95.out \
 	test99.out \
 	test108.out \
-	test_autoformat_join.out \
 	test_changelist.out \
 	test_close_count.out \
 	test_erasebackword.out \
@@ -72,11 +69,6 @@ SCRIPTS_MORE2 = \
 	test49.out
 
 
-# Tests that run on most systems, but not MingW and Cygwin.
-SCRIPTS_MORE3 = \
-	test54.out
-
-
 # Tests that run on most systems, but not on VMS
 SCRIPTS_MORE4 = \
 	test17.out \
@@ -187,6 +179,7 @@ NEW_TESTS = test_arabic.res \
 	    test_textobjects.res \
 	    test_undo.res \
 	    test_usercommands.res \
+	    test_user_func.res \
 	    test_viminfo.res \
 	    test_vimscript.res \
 	    test_visual.res \
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -19,7 +19,7 @@ include Make_all.mak
 # test85	no Lua interface
 # test86, 87	no Python interface
 
-SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE3) $(SCRIPTS_MORE4)
+SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE4)
 
 # Must run test1 first to create small.vim.
 $(SCRIPTS) $(SCRIPTS_GUI) $(NEW_TESTS): $(SCRIPTS_FIRST)
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -17,7 +17,7 @@ default: nongui
 # test49	fails in various ways
 # test97	\{ and \$ are not escaped characters.
 
-SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE1) $(SCRIPTS_MORE3) $(SCRIPTS_MORE4)
+SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE1) $(SCRIPTS_MORE4)
 
 TEST_OUTFILES = $(SCRIPTS_FIRST) $(SCRIPTS) $(SCRIPTS_WIN32) $(SCRIPTS_GUI)
 DOSTMP = dostmp
--- a/src/testdir/Make_ming.mak
+++ b/src/testdir/Make_ming.mak
@@ -4,8 +4,6 @@
 #
 # Author: Bill McCarthy
 #
-# Note that test54 has been removed until it is fixed.
-#
 # Requires a set of Unix tools: echo, diff, etc.
 
 ifneq (sh.exe, $(SHELL))
@@ -35,7 +33,6 @@ include Make_all.mak
 # test10	'errorformat' is different
 # test12	can't unlink a swap file
 # test25	uses symbolic link
-# test54	doesn't work yet
 # test97	\{ and \$ are not escaped characters
 
 SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE1) $(SCRIPTS_MORE4) $(SCRIPTS_WIN32)
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -74,14 +74,13 @@ VIMPROG = <->vim.exe
 .SUFFIXES : .out .in
 
 SCRIPT = test1.out test3.out \
-       test8.out  \
        test14.out test15.out \
        test19.out test20.out \
        test28.out test29.out test30.out test32.out \
-       test34.out test36.out test37.out \
+       test36.out test37.out \
        test38.out test39.out test40.out test42.out \
        test44.out test45.out \
-       test48.out test49.out test54.out \
+       test48.out test49.out \
        test55.out \
        test64.out \
        test66.out test68.out test69.out \
@@ -92,7 +91,6 @@ SCRIPT = test1.out test3.out \
        test95.out test99.out \
        test108.out\
        test_autocmd_option.out \
-       test_autoformat_join.out \
        test_breakindent.out \
        test_changelist.out \
        test_close_count.out \
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -24,7 +24,6 @@ include Make_all.mak
 SCRIPTS = $(SCRIPTS_ALL) \
 	  $(SCRIPTS_MORE1) \
 	  $(SCRIPTS_MORE2) \
-	  $(SCRIPTS_MORE3) \
 	  $(SCRIPTS_MORE4)
 
 SCRIPTS_BENCH = bench_re_freeze.out
--- a/src/testdir/main.aap
+++ b/src/testdir/main.aap
@@ -5,12 +5,12 @@
 VimProg ?= ../vim
 
 Scripts = test1.out test2.out test3.out test6.out
-		test8.out test11.out
+		test11.out
 		test12.out  test13.out test14.out test15.out test17.out
 		test18.out test19.out test20.out test21.out
 		test25.out test27.out
 		test28.out test29.out test30.out test32.out
-		test34.out test36.out test37.out
+		test36.out test37.out
 		test38.out test39.out test40.out test42.out
 		test44.out test45.out test46.out test47.out
 		test48.out test49.out test74.out
deleted file mode 100644
--- a/src/testdir/test34.in
+++ /dev/null
@@ -1,87 +0,0 @@
-Test for user functions.
-Also test an <expr> mapping calling a function.
-Also test that a builtin function cannot be replaced.
-Also test for regression when calling arbitrary expression.
-
-STARTTEST
-:so small.vim
-:function Table(title, ...)
-:  let ret = a:title
-:  let idx = 1
-:  while idx <= a:0
-:    exe "let ret = ret . a:" . idx
-:    let idx = idx + 1
-:  endwhile
-:  return ret
-:endfunction
-:function Compute(n1, n2, divname)
-:  if a:n2 == 0
-:    return "fail"
-:  endif
-:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
-:  return "ok"
-:endfunction
-:func Expr1()
-:  normal! v
-:  return "111"
-:endfunc
-:func Expr2()
-:  call search('XX', 'b')
-:  return "222"
-:endfunc
-:func ListItem()
-:  let g:counter += 1
-:  return g:counter . '. '
-:endfunc
-:func ListReset()
-:  let g:counter = 0
-:  return ''
-:endfunc
-:func FuncWithRef(a)
-:  unlet g:FuncRef
-:  return a:a
-:endfunc
-:let g:FuncRef=function("FuncWithRef")
-:let counter = 0
-:inoremap <expr> ( ListItem()
-:inoremap <expr> [ ListReset()
-:imap <expr> + Expr1()
-:imap <expr> * Expr2()
-:let retval = "nop"
-/^here
-C=Table("xxx", 4, "asdf")
- =Compute(45, 0, "retval")
- =retval
- =Compute(45, 5, "retval")
- =retval
- =g:FuncRef(333)
-
-XX+-XX
----*---
-(one
-(two
-[(one again:call append(line('$'), max([1, 2, 3]))
-:call extend(g:, {'max': function('min')})
-:call append(line('$'), max([1, 2, 3]))
-:try
-:    " Regression: the first line below used to throw ?E110: Missing ')'?
-:    " Second is here just to prove that this line is correct when not skipping
-:    " rhs of &&.
-:    $put =(0&&(function('tr'))(1, 2, 3))
-:    $put =(1&&(function('tr'))(1, 2, 3))
-:catch
-:    $put ='!!! Unexpected exception:'
-:    $put =v:exception
-:endtry
-:$-9,$w! test.out
-:delfunc Table
-:delfunc Compute
-:delfunc Expr1
-:delfunc Expr2
-:delfunc ListItem
-:delfunc ListReset
-:unlet retval counter
-:q!
-ENDTEST
-
-here
deleted file mode 100644
--- a/src/testdir/test34.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-xxx4asdf fail nop ok 9 333
-XX111-XX
----222---
-1. one
-2. two
-1. one again
-3
-3
-0
-1
deleted file mode 100644
--- a/src/testdir/test54.in
+++ /dev/null
@@ -1,22 +0,0 @@
-Some tests for buffer-local autocommands
-
-STARTTEST
-:so small.vim
-:e xx
-:if has("vms")
-: !del test.out.*
-: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
-:else
-: !rm -f test.out
-: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
-:endif
-:e somefile           " here, autocommand for xx shall write test.out 
-:                     " but autocommand shall not apply to buffer named <buffer>
-:bwipe xx             " here, autocommand shall be auto-deleted
-:e xx                 " nothing shall be written
-:e somefile           " nothing shall be written
-:qa!
-ENDTEST
-
-start of test file xx
-end of test file xx
deleted file mode 100644
--- a/src/testdir/test54.ok
+++ /dev/null
@@ -1,1 +0,0 @@
-buffer-local autommand in xx
deleted file mode 100644
--- a/src/testdir/test8.in
+++ /dev/null
@@ -1,46 +0,0 @@
-Test for BufWritePre autocommand that deletes or unloads the buffer.
-Test for BufUnload autocommand that unloads all other buffers.
-
-STARTTEST
-:so small.vim
-:au BufWritePre Xxx1 bunload
-:au BufWritePre Xxx2 bwipe
-/^start of
-A1:.,/end of/w! Xxx1  " write test file Xxx1
-$r2:.,/end of/w! Xxx2   " write test file Xxx2
-:e! Xxx2                " edit Xxx2
-:bdel test8.in		" delete this file from the buffer list
-:e Xxx1                 " edit Xxx1
-:w                      " write it, will unload it and give an error msg
-:w! test.out            " Write contents of this file
-:e! Xxx2                " start editing Xxx2
-:bwipe test.out         " remove test.out from the buffer list
-:w                      " write it, will delete the buffer and give an error msg
-:w >>test.out           " Append contents of this file
-:au! BufWritePre
-:func CloseAll()
-  let i = 0
-  while i <= bufnr('$')
-    if i != bufnr('%') && bufloaded(i)
-      exe  i . "bunload"
-    endif
-    let i += 1
-  endwhile
-endfunc
-:func WriteToOut()
-  edit! test.out
-  $put ='VimLeave done'
-  write
-endfunc
-:set viminfo='100,nviminfo
-:au BufUnload * call CloseAll()
-:au VimLeave * call WriteToOut()
-:e small.vim
-:sp mbyte.vim
-:q
-:qa!
-ENDTEST
-
-start of Xxx
-	test
-end of Xxx
deleted file mode 100644
--- a/src/testdir/test8.ok
+++ /dev/null
@@ -1,7 +0,0 @@
-start of Xxx2
-	test
-end of Xxx
-start of Xxx1
-	test
-end of Xxx
-VimLeave done
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -773,6 +773,7 @@ func Test_BufLeave_Wipe()
 
   call delete('Xxx1')
   call delete('Xxx2')
+  call delete('test.out')
   %bwipe
   au! BufLeave
 
@@ -809,9 +810,93 @@ func Test_Cmdline()
   au! CmdlineLeave / let g:left = expand('<afile>')
   let g:entered = 0
   let g:left = 0
-  call feedkeys("/hello<CR>", 'xt')
+  new
+  call setline(1, 'hello')
+  call feedkeys("/hello\<CR>", 'xt')
   call assert_equal('/', g:entered)
   call assert_equal('/', g:left)
+  bwipe!
   au! CmdlineEnter
   au! CmdlineLeave
 endfunc
+
+" Test for BufWritePre autocommand that deletes or unloads the buffer.
+func Test_BufWritePre()
+  %bwipe
+  au BufWritePre Xxx1 bunload
+  au BufWritePre Xxx2 bwipe
+
+  call writefile(['start of Xxx1', 'test', 'end of Xxx1'], 'Xxx1')
+  call writefile(['start of Xxx2', 'test', 'end of Xxx2'], 'Xxx2')
+
+  edit Xtest
+  e! Xxx2
+  bdel Xtest
+  e Xxx1
+  " write it, will unload it and give an error msg
+  call assert_fails('w', 'E203')
+  call assert_equal('Xxx2', bufname('%'))
+  edit Xtest
+  e! Xxx2
+  bwipe Xtest
+  " write it, will delete the buffer and give an error msg
+  call assert_fails('w', 'E203')
+  call assert_equal('Xxx1', bufname('%'))
+  au! BufWritePre
+  call delete('Xxx1')
+  call delete('Xxx2')
+endfunc
+
+" Test for BufUnload autocommand that unloads all the other buffers
+func Test_bufunload_all()
+  call writefile(['Test file Xxx1'], 'Xxx1')"
+  call writefile(['Test file Xxx2'], 'Xxx2')"
+
+  let content = [
+	      \ "func UnloadAllBufs()",
+	      \ "  let i = 1",
+	      \ "  while i <= bufnr('$')",
+	      \ "    if i != bufnr('%') && bufloaded(i)",
+	      \ "      exe  i . 'bunload'",
+	      \ "    endif",
+	      \ "    let i += 1",
+	      \ "  endwhile",
+	      \ "endfunc",
+	      \ "au BufUnload * call UnloadAllBufs()",
+	      \ "au VimLeave * call writefile(['Test Finished'], 'Xout')",
+	      \ "edit Xxx1",
+	      \ "split Xxx2",
+	      \ "q"]
+  call writefile(content, 'Xtest')
+
+  call delete('Xout')
+  call system(v:progpath. ' --clean -N --not-a-term -S Xtest')
+  call assert_true(filereadable('Xout'))
+
+  call delete('Xxx1')
+  call delete('Xxx2')
+  call delete('Xtest')
+  call delete('Xout')
+endfunc
+
+" Some tests for buffer-local autocommands
+func Test_buflocal_autocmd()
+  let g:bname = ''
+  edit xx
+  au BufLeave <buffer> let g:bname = expand("%")
+  " here, autocommand for xx should trigger.
+  " but autocommand shall not apply to buffer named <buffer>.
+  edit somefile
+  call assert_equal('xx', g:bname)
+  let g:bname = ''
+  " here, autocommand shall be auto-deleted
+  bwipe xx
+  " autocmd should not trigger
+  edit xx
+  call assert_equal('', g:bname)
+  " autocmd should not trigger
+  edit somefile
+  call assert_equal('', g:bname)
+  enew
+  unlet g:bname
+endfunc
deleted file mode 100644
--- a/src/testdir/test_autoformat_join.in
+++ /dev/null
@@ -1,23 +0,0 @@
-Tests for setting the '[,'] marks when joining lines.
-
-STARTTEST
-:so small.vim
-:/^\t\t/
-0gqj:
-:let a=string(getpos("'[")).'/'.string(getpos("']"))
-:/^This line/;'}-join
-:let b=string(getpos("'[")).'/'.string(getpos("']"))
-:$put ='First test: Start/End '.string(a)
-:$put ='Second test: Start/End '.string(b)
-:/^\t\t/,$wq! test.out
-ENDTEST
-
-
-		O sodales, ludite, vos qui
-attamen consulite per voster honur. Tua pulchra facies me fay planszer milies
-
-This line.
-Should be joined with the next line
-and with this line
-
-Results:
deleted file mode 100644
--- a/src/testdir/test_autoformat_join.ok
+++ /dev/null
@@ -1,8 +0,0 @@
-		O sodales, ludite, vos qui attamen consulite per voster honur.
-Tua pulchra facies me fay planszer milies
-
-This line.  Should be joined with the next line and with this line
-
-Results:
-First test: Start/End '[0, 16, 1, 0]/[0, 17, 1, 0]'
-Second test: Start/End '[0, 19, 11, 0]/[0, 19, 67, 0]'
--- a/src/testdir/test_join.vim
+++ b/src/testdir/test_join.vim
@@ -11,3 +11,25 @@ func Test_join_with_count()
   call assert_equal('one two three four', getline(1))
   quit!
 endfunc
+
+" Tests for setting the '[,'] marks when joining lines.
+func Test_join_marks()
+  enew
+  call append(0, [
+	      \ "\t\tO sodales, ludite, vos qui",
+	      \ "attamen consulite per voster honur. Tua pulchra " .
+	      \ "facies me fay planszer milies",
+	      \ "",
+	      \ "This line.",
+	      \ "Should be joined with the next line",
+	      \ "and with this line"])
+
+  normal gg0gqj
+  call assert_equal([0, 1, 1, 0], getpos("'["))
+  call assert_equal([0, 2, 1, 0], getpos("']"))
+
+  /^This line/;'}-join
+  call assert_equal([0, 4, 11, 0], getpos("'["))
+  call assert_equal([0, 4, 67, 0], getpos("']"))
+  enew!
+endfunc
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_user_func.vim
@@ -0,0 +1,96 @@
+" Test for user functions.
+" Also test an <expr> mapping calling a function.
+" Also test that a builtin function cannot be replaced.
+" Also test for regression when calling arbitrary expression.
+
+func Table(title, ...)
+  let ret = a:title
+  let idx = 1
+  while idx <= a:0
+    exe "let ret = ret . a:" . idx
+    let idx = idx + 1
+  endwhile
+  return ret
+endfunc
+
+func Compute(n1, n2, divname)
+  if a:n2 == 0
+    return "fail"
+  endif
+  exe "let g:" . a:divname . " = ". a:n1 / a:n2
+  return "ok"
+endfunc
+
+func Expr1()
+  silent! normal! v
+  return "111"
+endfunc
+
+func Expr2()
+  call search('XX', 'b')
+  return "222"
+endfunc
+
+func ListItem()
+  let g:counter += 1
+  return g:counter . '. '
+endfunc
+
+func ListReset()
+  let g:counter = 0
+  return ''
+endfunc
+
+func FuncWithRef(a)
+  unlet g:FuncRef
+  return a:a
+endfunc
+
+func Test_user_func()
+  let g:FuncRef=function("FuncWithRef")
+  let g:counter = 0
+  inoremap <expr> ( ListItem()
+  inoremap <expr> [ ListReset()
+  imap <expr> + Expr1()
+  imap <expr> * Expr2()
+  let g:retval = "nop"
+
+  call assert_equal('xxx4asdf', Table("xxx", 4, "asdf"))
+  call assert_equal('fail', Compute(45, 0, "retval"))
+  call assert_equal('nop', g:retval)
+  call assert_equal('ok', Compute(45, 5, "retval"))
+  call assert_equal(9, g:retval)
+  call assert_equal(333, g:FuncRef(333))
+
+  enew
+
+  normal oXX+-XX
+  call assert_equal('XX111-XX', getline('.'))
+  normal o---*---
+  call assert_equal('---222---', getline('.'))
+  normal o(one
+  call assert_equal('1. one', getline('.'))
+  normal o(two
+  call assert_equal('2. two', getline('.'))
+  normal o[(one again
+  call assert_equal('1. one again', getline('.'))
+
+  call assert_equal(3, max([1, 2, 3]))
+  call assert_fails("call extend(g:, {'max': function('min')})", 'E704')
+  call assert_equal(3, max([1, 2, 3]))
+
+  " Regression: the first line below used to throw ?E110: Missing ')'?
+  " Second is here just to prove that this line is correct when not skipping
+  " rhs of &&.
+  call assert_equal(0, (0 && (function('tr'))(1, 2, 3)))
+  call assert_equal(1, (1 && (function('tr'))(1, 2, 3)))
+
+  delfunc Table
+  delfunc Compute
+  delfunc Expr1
+  delfunc Expr2
+  delfunc ListItem
+  delfunc ListReset
+  unlet g:retval g:counter
+  enew!
+endfunc
--- 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 */
 /**/
+    1209,
+/**/
     1208,
 /**/
     1207,