]> granicus.if.org Git - vim/commitdiff
patch 7.4.980 v7.4.980
authorBram Moolenaar <Bram@vim.org>
Mon, 28 Dec 2015 13:04:47 +0000 (14:04 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 28 Dec 2015 13:04:47 +0000 (14:04 +0100)
Problem:    Tests for :cdo, :ldo, etc. are outdated.
Solution:   Add new style tests for these commands. (Yegappan Lakshmanan)

src/testdir/Make_amiga.mak
src/testdir/Make_dos.mak
src/testdir/Make_ming.mak
src/testdir/Make_os2.mak
src/testdir/Make_vms.mms
src/testdir/Makefile
src/testdir/test_cdo.in [deleted file]
src/testdir/test_cdo.ok [deleted file]
src/testdir/test_cdo.vim [new file with mode: 0644]
src/version.c

index d60f1a1bbecbb0b6c77b9128755eaada02553619..250209b59764c42e341e22808e540e8827b2abac 100644 (file)
@@ -41,7 +41,6 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
                test_autocmd_option.out \
                test_autoformat_join.out \
                test_breakindent.out \
-               test_cdo.out \
                test_changelist.out \
                test_charsearch.out \
                test_close_count.out \
@@ -197,7 +196,6 @@ test_argument_count.out: test_argument_count.in
 test_autocmd_option.out: test_autocmd_option.in
 test_autoformat_join.out: test_autoformat_join.in
 test_breakindent.out: test_breakindent.in
-test_cdo.out: test_cdo.in
 test_changelist.out: test_changelist.in
 test_charsearch.out: test_charsearch.in
 test_close_count.out: test_close_count.in
index 8dbe97e2f164f5582a3018c1b04b106e80be818a..5b16874a13cf3df2e6e15f63683ba987873c24fb 100644 (file)
@@ -40,7 +40,6 @@ SCRIPTS =     test3.out test4.out test5.out test6.out test7.out \
                test_autocmd_option.out \
                test_autoformat_join.out \
                test_breakindent.out \
-               test_cdo.out \
                test_changelist.out \
                test_charsearch.out \
                test_close_count.out \
index a7c98ee8dcd6812598b1bcdadecfa65d95dca728..fc9bd93d72a121ec8ebc8d96e02fccbb772803fe 100644 (file)
@@ -62,7 +62,6 @@ SCRIPTS =     test3.out test4.out test5.out test6.out test7.out \
                test_autocmd_option.out \
                test_autoformat_join.out \
                test_breakindent.out \
-               test_cdo.out \
                test_changelist.out \
                test_charsearch.out \
                test_close_count.out \
index 926411b6482c80c85e1bfa0aeae3bddbe3262aaf..8ba54f2182a5bd1f19c236033edb0d281ad738ff 100644 (file)
@@ -42,7 +42,6 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
                test_autocmd_option.out \
                test_autoformat_join.out \
                test_breakindent.out \
-               test_cdo.out \
                test_changelist.out \
                test_charsearch.out \
                test_close_count.out \
index 990ae5f572795d3aabdb8e04ef7118dfcb7585c4..70ba14876d07bb62eba64228abaf0663d0043768 100644 (file)
@@ -101,7 +101,6 @@ SCRIPT = test1.out  test2.out  test3.out  test4.out  test5.out  \
         test_autocmd_option.out \
         test_autoformat_join.out \
         test_breakindent.out \
-        test_cdo.out \
         test_changelist.out \
         test_charsearch.out \
         test_close_count.out \
index 83350aa638cec25cfec760c29f81c5621ec6be3c..cb0ec4596be8ea2d86390e41a686864586ce3c27 100644 (file)
@@ -41,7 +41,6 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
                test_autocmd_option.out \
                test_autoformat_join.out \
                test_breakindent.out \
-               test_cdo.out \
                test_changelist.out \
                test_charsearch.out \
                test_close_count.out \
@@ -72,6 +71,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
                test_writefile.out
 
 NEW_TESTS = test_assert.res \
+           test_cdo.res \
            test_alot.res
 
 SCRIPTS_GUI = test16.out
@@ -173,4 +173,4 @@ RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPR
 newtests: $(NEW_TESTS)
 
 .vim.res:
-       $(RUN_VIMTEST) -u runtest.vim $*.vim
+       $(RUN_VIMTEST) -S runtest.vim $*.vim
diff --git a/src/testdir/test_cdo.in b/src/testdir/test_cdo.in
deleted file mode 100644 (file)
index 087cd2e..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-Tests for the :cdo, :cfdo, :ldo and :lfdo commands
-
-STARTTEST
-:so small.vim
-:lang mess C
-:if !has('quickfix') | e! test.ok | wq! test.out | endif
-
-:call writefile(["Line1", "Line2", "Line3"], 'Xtestfile1')
-:call writefile(["Line1", "Line2", "Line3"], 'Xtestfile2')
-:call writefile(["Line1", "Line2", "Line3"], 'Xtestfile3')
-
-:function RunTests(cchar)
-:  let nl="\n"
-
-:  enew
-:  " Try with an empty list
-:  exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-
-:  " Populate the list and then try
-:  exe a:cchar . "getexpr ['non-error 1', 'Xtestfile1:1:3:Line1', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:3:1:Line3']"
-:  exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-
-:  " Run command only on selected error lines
-:  enew
-:  exe "2,3" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  " Boundary condition tests
-:  enew
-:  exe "1,1" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  enew
-:  exe "3" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  " Range test commands
-:  enew
-:  exe "%" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  enew
-:  exe "1,$" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  enew
-:  exe a:cchar . 'prev'
-:  exe "." . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  " Invalid error lines test
-:  enew
-:  exe "27" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "4,5" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-
-:  " Run commands from an unsaved buffer
-:  let v:errmsg=''
-:  enew
-:  setlocal modified
-:  exe "2,2" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  if v:errmsg =~# 'No write since last change'
-:     let g:result .= 'Unsaved file change test passed' . nl
-:  else
-:     let g:result .= 'Unsaved file change test failed' . nl
-:  endif
-
-:  " If the executed command fails, then the operation should be aborted
-:  enew!
-:  let subst_count = 0
-:  exe a:cchar . "do s/Line/xLine/ | let subst_count += 1"
-:  if subst_count == 1 && getline('.') == 'xLine1'
-:     let g:result .= 'Abort command on error test passed' . nl
-:  else
-:     let g:result .= 'Abort command on error test failed' . nl
-:  endif
-
-:  exe "2,2" . a:cchar . "do! let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-
-:  " List with no valid error entries
-:  edit! +2 Xtestfile1
-:  exe a:cchar . "getexpr ['non-error 1', 'non-error 2', 'non-error 3']"
-:  exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "2" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  let v:errmsg=''
-:  exe "%" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "1,$" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "." . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  let g:result .= v:errmsg
-
-:  " List with only one valid entry
-:  exe a:cchar . "getexpr ['Xtestfile3:3:1:Line3']"
-:  exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-
-:  " Tests for :cfdo and :lfdo commands
-:  exe a:cchar . "getexpr ['non-error 1', 'Xtestfile1:1:3:Line1', 'Xtestfile1:2:1:Line2', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:2:3:Line2', 'Xtestfile3:3:1:Line3']"
-:  exe a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "3" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "2,3" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "%" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe "1,$" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:  exe a:cchar . 'pfile'
-:  exe "." . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-
-:  " List with only one valid entry
-:  exe a:cchar . "getexpr ['Xtestfile2:2:5:Line2']"
-:  exe a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
-:endfunction
-
-:let result=''
-:" Tests for the :cdo quickfix list command
-:call RunTests('c')
-:let result .= "\n"
-:" Tests for the :ldo location list command
-:call RunTests('l')
-
-:edit! test.out
-:0put =result
-:wq!
-ENDTEST
-
diff --git a/src/testdir/test_cdo.ok b/src/testdir/test_cdo.ok
deleted file mode 100644 (file)
index ddcff4b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile2 2L 2C
-Unsaved file change test passed
-Abort command on error test passed
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile3 2L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile2 2L 2C
-Xtestfile2 2L 5C
-
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile2 2L 2C
-Unsaved file change test passed
-Abort command on error test passed
-Xtestfile2 2L 2C
-Xtestfile3 3L 1C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile3 2L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile1 1L 3C
-Xtestfile2 2L 2C
-Xtestfile3 2L 3C
-Xtestfile2 2L 2C
-Xtestfile2 2L 5C
-
diff --git a/src/testdir/test_cdo.vim b/src/testdir/test_cdo.vim
new file mode 100644 (file)
index 0000000..10cd97c
--- /dev/null
@@ -0,0 +1,206 @@
+" Tests for the :cdo, :cfdo, :ldo and :lfdo commands
+
+lang mess C
+if !has('quickfix')
+  finish
+endif
+
+" Create the files used by the tests
+function SetUp()
+  call writefile(["Line1", "Line2", "Line3"], 'Xtestfile1')
+  call writefile(["Line1", "Line2", "Line3"], 'Xtestfile2')
+  call writefile(["Line1", "Line2", "Line3"], 'Xtestfile3')
+endfunction
+
+" Remove the files used by the tests
+function TearDown()
+  call delete('Xtestfile1')
+  call delete('Xtestfile2')
+  call delete('Xtestfile3')
+endfunction
+
+" Returns the current line in '<filename> <linenum>L <column>C' format
+function GetRuler()
+  return expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C'
+endfunction
+
+" Tests for the :cdo and :ldo commands
+function XdoTests(cchar)
+  enew
+
+  " Shortcuts for calling the cdo and ldo commands
+  let Xdo = a:cchar . 'do'
+  let Xgetexpr = a:cchar . 'getexpr'
+  let Xprev = a:cchar. 'prev'
+  let XdoCmd = Xdo . ' call add(l, GetRuler())'
+
+  " Try with an empty list
+  let l = []
+  exe XdoCmd
+  call assert_equal([], l)
+
+  " Populate the list and then try
+  exe Xgetexpr . " ['non-error 1', 'Xtestfile1:1:3:Line1', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:3:1:Line3']"
+
+  let l = []
+  exe XdoCmd
+  call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l)
+
+  " Run command only on selected error lines
+  let l = []
+  enew
+  exe "2,3" . XdoCmd
+  call assert_equal(['Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l)
+
+  " Boundary condition tests
+  let l = []
+  enew
+  exe "1,1" . XdoCmd
+  call assert_equal(['Xtestfile1 1L 3C'], l)
+
+  let l = []
+  enew
+  exe "3" . XdoCmd
+  call assert_equal(['Xtestfile3 3L 1C'], l)
+
+  " Range test commands
+  let l = []
+  enew
+  exe "%" . XdoCmd
+  call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l)
+
+  let l = []
+  enew
+  exe "1,$" . XdoCmd
+  call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l)
+
+  let l = []
+  enew
+  exe Xprev
+  exe "." . XdoCmd
+  call assert_equal(['Xtestfile2 2L 2C'], l)
+
+  let l = []
+  enew
+  exe "+" . XdoCmd
+  call assert_equal(['Xtestfile3 3L 1C'], l)
+
+  " Invalid error lines test
+  let l = []
+  enew
+  exe "silent! 27" . XdoCmd
+  exe "silent! 4,5" . XdoCmd
+  call assert_equal([], l)
+
+  " Run commands from an unsaved buffer
+  let v:errmsg=''
+  let l = []
+  enew
+  setlocal modified
+  exe "silent! 2,2" . XdoCmd
+  if v:errmsg !~# 'No write since last change'
+    call add(v:errors, 'Unsaved file change test failed')
+  endif
+
+  " If the executed command fails, then the operation should be aborted
+  enew!
+  let subst_count = 0
+  exe "silent!" . Xdo . " s/Line/xLine/ | let subst_count += 1"
+  if subst_count != 1 || getline('.') != 'xLine1'
+    call add(v:errors, 'Abort command on error test failed')
+  endif
+
+  let l = []
+  exe "2,2" . Xdo . "! call add(l, GetRuler())"
+  call assert_equal(['Xtestfile2 2L 2C'], l)
+
+  " List with no valid error entries
+  let l = []
+  edit! +2 Xtestfile1
+  exe Xgetexpr . " ['non-error 1', 'non-error 2', 'non-error 3']"
+  exe XdoCmd
+  call assert_equal([], l)
+  exe "silent! 2" . XdoCmd
+  call assert_equal([], l)
+  let v:errmsg=''
+  exe "%" . XdoCmd
+  exe "1,$" . XdoCmd
+  exe "." . XdoCmd
+  call assert_equal('', v:errmsg)
+
+  " List with only one valid entry
+  let l = []
+  exe Xgetexpr . " ['Xtestfile3:3:1:Line3']"
+  exe XdoCmd
+  call assert_equal(['Xtestfile3 3L 1C'], l)
+
+endfunction
+
+" Tests for the :cfdo and :lfdo commands
+function XfdoTests(cchar)
+  enew
+
+  " Shortcuts for calling the cfdo and lfdo commands
+  let Xfdo = a:cchar . 'fdo'
+  let Xgetexpr = a:cchar . 'getexpr'
+  let XfdoCmd = Xfdo . ' call add(l, GetRuler())'
+  let Xpfile = a:cchar. 'pfile'
+
+  " Clear the quickfix/location list
+  exe Xgetexpr . " []"
+
+  " Try with an empty list
+  let l = []
+  exe XfdoCmd
+  call assert_equal([], l)
+
+  " Populate the list and then try
+  exe Xgetexpr . " ['non-error 1', 'Xtestfile1:1:3:Line1', 'Xtestfile1:2:1:Line2', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:2:3:Line2', 'Xtestfile3:3:1:Line3']"
+
+  let l = []
+  exe XfdoCmd
+  call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l)
+
+  " Run command only on selected error lines
+  let l = []
+  exe "2,3" . XfdoCmd
+  call assert_equal(['Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l)
+
+  " Boundary condition tests
+  let l = []
+  exe "3" . XfdoCmd
+  call assert_equal(['Xtestfile3 2L 3C'], l)
+
+  " Range test commands
+  let l = []
+  exe "%" . XfdoCmd
+  call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l)
+
+  let l = []
+  exe "1,$" . XfdoCmd
+  call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l)
+
+  let l = []
+  exe Xpfile
+  exe "." . XfdoCmd
+  call assert_equal(['Xtestfile2 2L 2C'], l)
+
+  " List with only one valid entry
+  let l = []
+  exe Xgetexpr . " ['Xtestfile2:2:5:Line2']"
+  exe XfdoCmd
+  call assert_equal(['Xtestfile2 2L 5C'], l)
+
+endfunction
+
+" Tests for cdo and cfdo
+function Test_cdo()
+  call XdoTests('c')
+  call XfdoTests('c')
+endfunction
+
+" Tests for ldo and lfdo
+function Test_ldo()
+  call XdoTests('l')
+  call XfdoTests('l')
+endfunction
index f949e64273964560e216505b3d04c1a478a857a0..262876e2bcd4ea724cf604364e76993e4253229e 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    980,
 /**/
     979,
 /**/