mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.0.1221: 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 #2256)
This commit is contained in:
@@ -2100,13 +2100,12 @@ test1 \
|
||||
test_listchars \
|
||||
test_search_mbyte \
|
||||
test_wordcount \
|
||||
test3 test11 test12 test14 test15 test17 test19 \
|
||||
test20 test25 test28 test29 \
|
||||
test30 test32 test36 test37 test38 test39 \
|
||||
test3 test11 test12 test14 test15 test17 \
|
||||
test29 test30 test36 test37 test39 \
|
||||
test40 test42 test44 test45 test48 test49 \
|
||||
test50 test52 test55 test59 \
|
||||
test64 test66 test68 test69 \
|
||||
test70 test72 test73 test77 test79 \
|
||||
test64 test68 test69 \
|
||||
test70 test72 test73 test77 \
|
||||
test83 test85 test86 test87 test88 \
|
||||
test94 test95 test99 test108:
|
||||
cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
|
||||
|
@@ -16,13 +16,9 @@ SCRIPTS_ALL = \
|
||||
test3.out \
|
||||
test14.out \
|
||||
test15.out \
|
||||
test19.out \
|
||||
test20.out \
|
||||
test28.out \
|
||||
test29.out \
|
||||
test36.out \
|
||||
test37.out \
|
||||
test38.out \
|
||||
test39.out \
|
||||
test40.out \
|
||||
test42.out \
|
||||
@@ -31,12 +27,10 @@ SCRIPTS_ALL = \
|
||||
test48.out \
|
||||
test55.out \
|
||||
test64.out \
|
||||
test66.out \
|
||||
test68.out \
|
||||
test69.out \
|
||||
test70.out \
|
||||
test73.out \
|
||||
test79.out \
|
||||
test88.out \
|
||||
test94.out \
|
||||
test95.out \
|
||||
@@ -65,7 +59,6 @@ SCRIPTS_MORE1 = \
|
||||
# Tests that run on most systems, but not on Amiga and DOS/Windows.
|
||||
SCRIPTS_MORE2 = \
|
||||
test12.out \
|
||||
test25.out \
|
||||
test49.out
|
||||
|
||||
|
||||
@@ -73,7 +66,6 @@ SCRIPTS_MORE2 = \
|
||||
SCRIPTS_MORE4 = \
|
||||
test17.out \
|
||||
test30.out \
|
||||
test32.out \
|
||||
test59.out \
|
||||
test72.out \
|
||||
test83.out
|
||||
@@ -129,6 +121,7 @@ NEW_TESTS = test_arabic.res \
|
||||
test_hlsearch.res \
|
||||
test_increment.res \
|
||||
test_increment_dbcs.res \
|
||||
test_ins_complete.res \
|
||||
test_job_fails.res \
|
||||
test_json.res \
|
||||
test_langmap.res \
|
||||
@@ -173,6 +166,7 @@ NEW_TESTS = test_arabic.res \
|
||||
test_substitute.res \
|
||||
test_syntax.res \
|
||||
test_system.res \
|
||||
test_tab.res \
|
||||
test_tcl.res \
|
||||
test_terminal.res \
|
||||
test_terminal_fail.res \
|
||||
|
@@ -14,7 +14,6 @@ include Make_all.mak
|
||||
# test10 'errorformat' is different
|
||||
# test11 "cat" doesn't work properly
|
||||
# test12 can't unlink a swap file
|
||||
# test25 uses symbolic link
|
||||
# test52 only for Win32
|
||||
# test85 no Lua interface
|
||||
# test86, 87 no Python interface
|
||||
|
@@ -13,7 +13,6 @@ default: nongui
|
||||
# test2 "\\tmp" doesn't work.
|
||||
# test10 'errorformat' is different
|
||||
# test12 can't unlink a swap file
|
||||
# test25 uses symbolic link
|
||||
# test49 fails in various ways
|
||||
# test97 \{ and \$ are not escaped characters.
|
||||
|
||||
|
@@ -32,7 +32,6 @@ include Make_all.mak
|
||||
# test2 "\\tmp" doesn't work.
|
||||
# test10 'errorformat' is different
|
||||
# test12 can't unlink a swap file
|
||||
# test25 uses symbolic link
|
||||
# test97 \{ and \$ are not escaped characters
|
||||
|
||||
SCRIPTS = $(SCRIPTS_ALL) $(SCRIPTS_MORE1) $(SCRIPTS_MORE4) $(SCRIPTS_WIN32)
|
||||
|
@@ -75,21 +75,13 @@ VIMPROG = <->vim.exe
|
||||
|
||||
SCRIPT = test1.out test3.out \
|
||||
test14.out test15.out \
|
||||
test19.out test20.out \
|
||||
test28.out test29.out test30.out test32.out \
|
||||
test36.out test37.out \
|
||||
test38.out test39.out test40.out test42.out \
|
||||
test44.out test45.out \
|
||||
test48.out test49.out \
|
||||
test55.out \
|
||||
test64.out \
|
||||
test66.out test68.out test69.out \
|
||||
test72.out \
|
||||
test77a.out test79.out \
|
||||
test88.out \
|
||||
test94.out \
|
||||
test95.out test99.out \
|
||||
test108.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 \
|
||||
test64.out test68.out test69.out \
|
||||
test72.out test77a.out test88.out \
|
||||
test94.out test95.out test99.out test108.out\
|
||||
test_autocmd_option.out \
|
||||
test_breakindent.out \
|
||||
test_changelist.out \
|
||||
@@ -110,10 +102,6 @@ SCRIPT = test1.out test3.out \
|
||||
#
|
||||
# test30: bug, most probably - a problem around mac format
|
||||
#
|
||||
# test32: VMS is not case sensitive and all filenames are lowercase within Vim
|
||||
# (this should be changed in order to preserve the original filename) - should
|
||||
# be fixed. VMS allows just one dot in the filename
|
||||
#
|
||||
# test59: Failed/Hangs - VMS does not support spell files (file names
|
||||
# with too many dots).
|
||||
#
|
||||
@@ -131,7 +119,7 @@ GUI_OPTION = -g
|
||||
.ENDIF
|
||||
|
||||
.IFDEF WANT_UNIX
|
||||
SCRIPT_UNIX = test10.out test12.out test17.out test25.out test27.out test49.out test73.out
|
||||
SCRIPT_UNIX = test10.out test12.out test17.out test27.out test49.out test73.out
|
||||
.ENDIF
|
||||
|
||||
.IFDEF WANT_WIN
|
||||
|
@@ -7,11 +7,10 @@ VimProg ?= ../vim
|
||||
Scripts = test1.out test2.out test3.out test6.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
|
||||
test18.out test21.out
|
||||
test27.out test29.out test30.out
|
||||
test36.out test37.out
|
||||
test38.out test39.out test40.out test42.out
|
||||
test39.out test40.out test42.out
|
||||
test44.out test45.out test46.out test47.out
|
||||
test48.out test49.out test74.out
|
||||
|
||||
|
@@ -1,33 +0,0 @@
|
||||
Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
|
||||
Also test that dv_ works correctly
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:set smarttab expandtab ts=8 sw=4
|
||||
:" make sure that backspace works, no matter what termcap is used
|
||||
:set t_kD=x7f t_kb=x08
|
||||
/some
|
||||
r :set noexpandtab
|
||||
/other
|
||||
r
|
||||
:" Test replacing with Tabs and then backspacing to undo it
|
||||
0wR
|
||||
:" Test replacing with Tabs
|
||||
0wR
|
||||
:" Test that copyindent works with expandtab set
|
||||
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
|
||||
o{
|
||||
x:set nosol
|
||||
/Second line/
|
||||
fwdv_:?^start?,$w! test.out
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
start text
|
||||
some test text
|
||||
test text
|
||||
other test text
|
||||
a cde
|
||||
f ghi
|
||||
test text
|
||||
Second line beginning with whitespace
|
@@ -1,10 +0,0 @@
|
||||
start text
|
||||
ome test text
|
||||
test text
|
||||
ther test text
|
||||
a cde
|
||||
hi
|
||||
test text
|
||||
{
|
||||
x
|
||||
with whitespace
|
@@ -1,28 +0,0 @@
|
||||
Tests Blockwise Visual when there are TABs before the text.
|
||||
First test for undo working properly when executing commands from a register.
|
||||
Also test this in an empty buffer.
|
||||
|
||||
STARTTEST
|
||||
:so tiny.vim
|
||||
G0"ay$k@au
|
||||
:new
|
||||
@auY:quit!
|
||||
GP
|
||||
/start here$
|
||||
"by$jjlld
|
||||
/456$
|
||||
jj"bP
|
||||
:/56$/,$-1w! test.out
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
123456
|
||||
234567
|
||||
345678
|
||||
|
||||
test text test tex start here
|
||||
some text
|
||||
test text
|
||||
test text
|
||||
|
||||
OxjAykdd
|
@@ -1,10 +0,0 @@
|
||||
123start here56
|
||||
234start here67
|
||||
345start here78
|
||||
|
||||
test text test tex rt here
|
||||
somext
|
||||
tesext
|
||||
test text
|
||||
|
||||
|
@@ -1,31 +0,0 @@
|
||||
Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
|
||||
This only works for Unix, because of the symbolic link.
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:set hidden
|
||||
:" Create a link from test25.dir to the current directory.
|
||||
:!rm -f test25.dir
|
||||
:!ln -s . test25.dir
|
||||
:" Create tags.text, with the current directory name inserted.
|
||||
/tags line
|
||||
:r !pwd
|
||||
d$/test
|
||||
hP:.w! tags.test
|
||||
:" Try jumping to a tag in the current file, but with a path that contains a
|
||||
:" symbolic link. When wrong, this will give the ATTENTION message. The next
|
||||
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
|
||||
:set tags=tags.test
|
||||
G x:.w! test.out
|
||||
:!rm -f test25.dir tags.test
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
tags line:
|
||||
SECTION_OFF /test25.dir/test25.in /^#define SECTION_OFF 3$/
|
||||
|
||||
/*tx.c*/
|
||||
#define SECTION_OFF 3
|
||||
#define NUM_SECTIONS 3
|
||||
|
||||
SECTION_OFF
|
@@ -1 +0,0 @@
|
||||
#efine SECTION_OFF 3
|
Binary file not shown.
@@ -1,2 +0,0 @@
|
||||
sd
|
||||
map __2 asdsecondsdsd0map __5 asd0fifth
|
@@ -1,61 +0,0 @@
|
||||
Test for insert expansion
|
||||
|
||||
:se cpt=.,w
|
||||
* add-expands (word from next line) from other window
|
||||
* add-expands (current buffer first)
|
||||
* Local expansion, ends in an empty line (unless it becomes a global expansion)
|
||||
* starts Local and switches to global add-expansion
|
||||
:se cpt=.,w,i
|
||||
* i-add-expands and switches to local
|
||||
* add-expands lines (it would end in an empty line if it didn't ignored it self)
|
||||
:se cpt=kXtestfile
|
||||
* checks k-expansion, and file expansion (use Xtest11 instead of test11,
|
||||
* because TEST11.OUT may match first on DOS)
|
||||
:se cpt=w
|
||||
* checks make_cyclic in other window
|
||||
:se cpt=u nohid
|
||||
* checks unloaded buffer expansion
|
||||
* checks adding mode abortion
|
||||
:se cpt=t,d
|
||||
* tag expansion, define add-expansion interrupted
|
||||
* t-expansion
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:se nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&
|
||||
:set belloff=all
|
||||
:se cot=
|
||||
nO#include "Xtestfile"
|
||||
ru
|
||||
O
|
||||
|
||||
|
||||
:se cpt=.,w,i
|
||||
kOM
|
||||
|
||||
:se cpt=kXtestfile
|
||||
:w Xtest11.one
|
||||
:w Xtest11.two
|
||||
OIXA
|
||||
:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
|
||||
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
|
||||
OXddk
|
||||
:se cpt=w
|
||||
OST
|
||||
:se cpt=u nohid
|
||||
oOEN
|
||||
unl
|
||||
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
|
||||
O
|
||||
a
|
||||
:wq! test.out
|
||||
ENDTEST
|
||||
|
||||
start of testfile
|
||||
run1
|
||||
run2
|
||||
end of testfile
|
||||
|
||||
test11 36Gepeto /Tag/
|
||||
asd test11file 36G
|
||||
Makefile to run
|
@@ -1,15 +0,0 @@
|
||||
#include "Xtestfile"
|
||||
run1 run3
|
||||
run3 run3
|
||||
|
||||
Makefile to run3
|
||||
Makefile to run3
|
||||
Makefile to run3
|
||||
Xtest11.two
|
||||
STARTTEST
|
||||
ENDTEST
|
||||
unless
|
||||
test11file 36Gepeto /Tag/ asd
|
||||
asd
|
||||
run1 run2
|
||||
|
@@ -1,35 +0,0 @@
|
||||
|
||||
Test Virtual replace mode.
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:" make sure that backspace works, no matter what termcap is used
|
||||
:set t_kD=x7f t_kb=x08
|
||||
ggdGa
|
||||
abcdefghi
|
||||
jk lmn
|
||||
opq rst
|
||||
uvwxyz
|
||||
gg:set ai
|
||||
:set bs=2
|
||||
gR0 1
|
||||
A
|
||||
BCDEFGHIJ
|
||||
KL
|
||||
MNO
|
||||
PQRG:ka
|
||||
o0
|
||||
abcdefghi
|
||||
jk lmn
|
||||
opq rst
|
||||
uvwxyz
|
||||
'ajgR0 1
|
||||
A
|
||||
BCDEFGHIJ
|
||||
KL
|
||||
MNO
|
||||
PQR:$
|
||||
iab cdefghi jkl0gRAB......CDEFGHI.Jo:
|
||||
iabcdefghijklmnopqrst0gRAB IJKLMNO QR:wq! test.out
|
||||
ENDTEST
|
||||
|
@@ -1,13 +0,0 @@
|
||||
1
|
||||
A
|
||||
BCDEFGHIJ
|
||||
KL
|
||||
MNO
|
||||
PQR
|
||||
1
|
||||
abcdefghi
|
||||
jk lmn
|
||||
opq rst
|
||||
uvwxyz
|
||||
AB......CDEFGHI.Jkl
|
||||
AB IJKLMNO QRst
|
@@ -1,33 +0,0 @@
|
||||
|
||||
Test for visual block shift and tab characters.
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
/^one
|
||||
fe4jRugvr1:'<,'>w! test.out
|
||||
/^abcdefgh
|
||||
4jI j<<11|D
|
||||
7|a
|
||||
7|a
|
||||
7|a 4k13|4j<
|
||||
:$-5,$w >> test.out
|
||||
:$-4,$s/\s\+//g
|
||||
4kI j<<
|
||||
7|a
|
||||
7|a
|
||||
7|a 4k13|4j3<
|
||||
:$-4,$w >> test.out
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
one two three
|
||||
one two three
|
||||
one two three
|
||||
one two three
|
||||
one two three
|
||||
|
||||
abcdefghijklmnopqrstuvwxyz
|
||||
abcdefghijklmnopqrstuvwxyz
|
||||
abcdefghijklmnopqrstuvwxyz
|
||||
abcdefghijklmnopqrstuvwxyz
|
||||
abcdefghijklmnopqrstuvwxyz
|
@@ -1,16 +0,0 @@
|
||||
on1 two three
|
||||
on1 two three
|
||||
on1 two three
|
||||
on1 two three
|
||||
on1 two three
|
||||
|
||||
abcdefghijklmnopqrstuvwxyz
|
||||
abcdefghij
|
||||
abc defghijklmnopqrstuvwxyz
|
||||
abc defghijklmnopqrstuvwxyz
|
||||
abc defghijklmnopqrstuvwxyz
|
||||
abcdefghijklmnopqrstuvwxyz
|
||||
abcdefghij
|
||||
abc defghijklmnopqrstuvwxyz
|
||||
abc defghijklmnopqrstuvwxyz
|
||||
abc defghijklmnopqrstuvwxyz
|
Binary file not shown.
Binary file not shown.
91
src/testdir/test_ins_complete.vim
Normal file
91
src/testdir/test_ins_complete.vim
Normal file
@@ -0,0 +1,91 @@
|
||||
|
||||
" Test for insert expansion
|
||||
func Test_ins_complete()
|
||||
set ff=unix
|
||||
call writefile(["test11\t36Gepeto\t/Tag/",
|
||||
\ "asd\ttest11file\t36G",
|
||||
\ "Makefile\tto\trun"], 'Xtestfile')
|
||||
call writefile(['', 'start of testfile',
|
||||
\ 'ru',
|
||||
\ 'run1',
|
||||
\ 'run2',
|
||||
\ 'STARTTEST',
|
||||
\ 'ENDTEST',
|
||||
\ 'end of testfile'], 'Xtestdata')
|
||||
set ff&
|
||||
|
||||
enew!
|
||||
edit Xtestdata
|
||||
new
|
||||
call append(0, ['#include "Xtestfile"', ''])
|
||||
call cursor(2, 1)
|
||||
|
||||
set cot=
|
||||
set cpt=.,w
|
||||
" add-expands (word from next line) from other window
|
||||
exe "normal iru\<C-N>\<C-N>\<C-X>\<C-N>\<Esc>\<C-A>"
|
||||
call assert_equal('run1 run3', getline('.'))
|
||||
" add-expands (current buffer first)
|
||||
exe "normal o\<C-P>\<C-X>\<C-N>"
|
||||
call assert_equal('run3 run3', getline('.'))
|
||||
" Local expansion, ends in an empty line (unless it becomes a global
|
||||
" expansion)
|
||||
exe "normal o\<C-X>\<C-P>\<C-P>\<C-P>\<C-P>\<C-P>"
|
||||
call assert_equal('', getline('.'))
|
||||
" starts Local and switches to global add-expansion
|
||||
exe "normal o\<C-X>\<C-P>\<C-P>\<C-X>\<C-X>\<C-N>\<C-X>\<C-N>\<C-N>"
|
||||
call assert_equal('run1 run2', getline('.'))
|
||||
|
||||
set cpt=.,w,i
|
||||
" i-add-expands and switches to local
|
||||
exe "normal OM\<C-N>\<C-X>\<C-N>\<C-X>\<C-N>\<C-X>\<C-X>\<C-X>\<C-P>"
|
||||
call assert_equal("Makefile\tto\trun3", getline('.'))
|
||||
" add-expands lines (it would end in an empty line if it didn't ignored
|
||||
" itself)
|
||||
exe "normal o\<C-X>\<C-L>\<C-X>\<C-L>\<C-P>\<C-P>"
|
||||
call assert_equal("Makefile\tto\trun3", getline('.'))
|
||||
call assert_equal("Makefile\tto\trun3", getline(line('.') - 1))
|
||||
|
||||
set cpt=kXtestfile
|
||||
" checks k-expansion, and file expansion (use Xtest11 instead of test11,
|
||||
" because TEST11.OUT may match first on DOS)
|
||||
write Xtest11.one
|
||||
write Xtest11.two
|
||||
exe "normal o\<C-N>\<Esc>IX\<Esc>A\<C-X>\<C-F>\<C-N>"
|
||||
call assert_equal('Xtest11.two', getline('.'))
|
||||
|
||||
" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use CTRL-X
|
||||
" CTRL-F again to verify this doesn't cause trouble.
|
||||
exe "normal oXt\<C-X>\<C-F>\<BS>\<BS>\<BS>\<BS>\<BS>\<BS>\<BS>\<BS>\<C-X>\<C-F>"
|
||||
call assert_equal('Xtest11.one', getline('.'))
|
||||
normal ddk
|
||||
|
||||
set cpt=w
|
||||
" checks make_cyclic in other window
|
||||
exe "normal oST\<C-N>\<C-P>\<C-P>\<C-P>\<C-P>"
|
||||
call assert_equal('STARTTEST', getline('.'))
|
||||
|
||||
set cpt=u nohid
|
||||
" checks unloaded buffer expansion
|
||||
only
|
||||
exe "normal oEN\<C-N>"
|
||||
call assert_equal('ENDTEST', getline('.'))
|
||||
" checks adding mode abortion
|
||||
exe "normal ounl\<C-N>\<C-X>\<C-X>\<C-P>"
|
||||
call assert_equal('unless', getline('.'))
|
||||
|
||||
set cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
|
||||
" tag expansion, define add-expansion interrupted
|
||||
exe "normal o\<C-X>\<C-]>\<C-X>\<C-D>\<C-X>\<C-D>\<C-X>\<C-X>\<C-D>\<C-X>\<C-D>\<C-X>\<C-D>\<C-X>\<C-D>"
|
||||
call assert_equal('test11file 36Gepeto /Tag/ asd', getline('.'))
|
||||
" t-expansion
|
||||
exe "normal oa\<C-N>\<Esc>"
|
||||
call assert_equal('asd', getline('.'))
|
||||
|
||||
%bw!
|
||||
call delete('Xtestfile')
|
||||
call delete('Xtest11.one')
|
||||
call delete('Xtest11.two')
|
||||
call delete('Xtestdata')
|
||||
set cpt& cot& def& tags& tagbsearch& hidden&
|
||||
endfunc
|
@@ -31,3 +31,33 @@ func Test_source_latin()
|
||||
bwipe!
|
||||
call delete('Xscript')
|
||||
endfunc
|
||||
|
||||
" Test for sourcing a file with CTRL-V's at the end of the line
|
||||
func Test_source_ctrl_v()
|
||||
call writefile(['map __1 afirst',
|
||||
\ 'map __2 asecond',
|
||||
\ 'map __3 athird',
|
||||
\ 'map __4 afourth',
|
||||
\ 'map __5 afifth',
|
||||
\ "map __1 asd\<C-V>",
|
||||
\ "map __2 asd\<C-V>\<C-V>",
|
||||
\ "map __3 asd\<C-V>\<C-V>",
|
||||
\ "map __4 asd\<C-V>\<C-V>\<C-V>",
|
||||
\ "map __5 asd\<C-V>\<C-V>\<C-V>",
|
||||
\ ], 'Xtestfile')
|
||||
source Xtestfile
|
||||
enew!
|
||||
exe "normal __1\<Esc>\<Esc>__2\<Esc>__3\<Esc>\<Esc>__4\<Esc>__5\<Esc>"
|
||||
exe "%s/\<C-J>/0/g"
|
||||
call assert_equal(['sd',
|
||||
\ "map __2 asd\<Esc>secondsd\<Esc>sd0map __5 asd0fifth"],
|
||||
\ getline(1, 2))
|
||||
|
||||
enew!
|
||||
call delete('Xtestfile')
|
||||
unmap __1
|
||||
unmap __2
|
||||
unmap __3
|
||||
unmap __4
|
||||
unmap __5
|
||||
endfunc
|
||||
|
@@ -294,3 +294,209 @@ func Test_sub_replace_10()
|
||||
call assert_equal('aa2a3a', substitute('123', '1\|\ze', 'a', 'g'))
|
||||
call assert_equal('1aaa', substitute('123', '1\zs\|[23]', 'a', 'g'))
|
||||
endfunc
|
||||
|
||||
" Tests for *sub-replace-special* and *sub-replace-expression* on :substitute.
|
||||
|
||||
" Execute a list of :substitute command tests
|
||||
func Run_SubCmd_Tests(tests)
|
||||
enew!
|
||||
for t in a:tests
|
||||
let start = line('.') + 1
|
||||
let end = start + len(t[2]) - 1
|
||||
exe "normal o" . t[0]
|
||||
call cursor(start, 1)
|
||||
exe t[1]
|
||||
call assert_equal(t[2], getline(start, end), t[1])
|
||||
endfor
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
func Test_sub_cmd_1()
|
||||
set magic
|
||||
set cpo&
|
||||
|
||||
" List entry format: [input, cmd, output]
|
||||
let tests = [['A', 's/A/&&/', ['AA']],
|
||||
\ ['B', 's/B/\&/', ['&']],
|
||||
\ ['C123456789', 's/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/', ['C123456789987654321']],
|
||||
\ ['D', 's/D/d/', ['d']],
|
||||
\ ['E', 's/E/~/', ['d']],
|
||||
\ ['F', 's/F/\~/', ['~']],
|
||||
\ ['G', 's/G/\ugg/', ['Gg']],
|
||||
\ ['H', 's/H/\Uh\Eh/', ['Hh']],
|
||||
\ ['I', 's/I/\lII/', ['iI']],
|
||||
\ ['J', 's/J/\LJ\EJ/', ['jJ']],
|
||||
\ ['K', 's/K/\Uk\ek/', ['Kk']],
|
||||
\ ['lLl', "s/L/\<C-V>\<C-M>/", ["l\<C-V>", 'l']],
|
||||
\ ['mMm', 's/M/\r/', ['m', 'm']],
|
||||
\ ['nNn', "s/N/\\\<C-V>\<C-M>/", ["n\<C-V>", 'n']],
|
||||
\ ['oOo', 's/O/\n/', ["o\no"]],
|
||||
\ ['pPp', 's/P/\b/', ["p\<C-H>p"]],
|
||||
\ ['qQq', 's/Q/\t/', ["q\tq"]],
|
||||
\ ['rRr', 's/R/\\/', ['r\r']],
|
||||
\ ['sSs', 's/S/\c/', ['scs']],
|
||||
\ ['tTt', "s/T/\<C-V>\<C-J>/", ["t\<C-V>\<C-J>t"]],
|
||||
\ ['U', 's/U/\L\uuUu\l\EU/', ['UuuU']],
|
||||
\ ['V', 's/V/\U\lVvV\u\Ev/', ['vVVv']]
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
endfunc
|
||||
|
||||
func Test_sub_cmd_2()
|
||||
set nomagic
|
||||
set cpo&
|
||||
|
||||
" List entry format: [input, cmd, output]
|
||||
let tests = [['A', 's/A/&&/', ['&&']],
|
||||
\ ['B', 's/B/\&/', ['B']],
|
||||
\ ['C123456789', 's/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/', ['C123456789987654321']],
|
||||
\ ['D', 's/D/d/', ['d']],
|
||||
\ ['E', 's/E/~/', ['~']],
|
||||
\ ['F', 's/F/\~/', ['~']],
|
||||
\ ['G', 's/G/\ugg/', ['Gg']],
|
||||
\ ['H', 's/H/\Uh\Eh/', ['Hh']],
|
||||
\ ['I', 's/I/\lII/', ['iI']],
|
||||
\ ['J', 's/J/\LJ\EJ/', ['jJ']],
|
||||
\ ['K', 's/K/\Uk\ek/', ['Kk']],
|
||||
\ ['lLl', "s/L/\<C-V>\<C-M>/", ["l\<C-V>", 'l']],
|
||||
\ ['mMm', 's/M/\r/', ['m', 'm']],
|
||||
\ ['nNn', "s/N/\\\<C-V>\<C-M>/", ["n\<C-V>", 'n']],
|
||||
\ ['oOo', 's/O/\n/', ["o\no"]],
|
||||
\ ['pPp', 's/P/\b/', ["p\<C-H>p"]],
|
||||
\ ['qQq', 's/Q/\t/', ["q\tq"]],
|
||||
\ ['rRr', 's/R/\\/', ['r\r']],
|
||||
\ ['sSs', 's/S/\c/', ['scs']],
|
||||
\ ['tTt', "s/T/\<C-V>\<C-J>/", ["t\<C-V>\<C-J>t"]],
|
||||
\ ['U', 's/U/\L\uuUu\l\EU/', ['UuuU']],
|
||||
\ ['V', 's/V/\U\lVvV\u\Ev/', ['vVVv']]
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
endfunc
|
||||
|
||||
func Test_sub_cmd_3()
|
||||
set nomagic
|
||||
set cpo&
|
||||
|
||||
" List entry format: [input, cmd, output]
|
||||
let tests = [['aAa', "s/A/\\='\\'/", ['a\a']],
|
||||
\ ['bBb', "s/B/\\='\\\\'/", ['b\\b']],
|
||||
\ ['cCc', "s/C/\\='\<C-V>\<C-M>'/", ["c\<C-V>", 'c']],
|
||||
\ ['dDd', "s/D/\\='\\\<C-V>\<C-M>'/", ["d\\\<C-V>", 'd']],
|
||||
\ ['eEe', "s/E/\\='\\\\\<C-V>\<C-M>'/", ["e\\\\\<C-V>", 'e']],
|
||||
\ ['fFf', "s/F/\\='\r'/", ['f', 'f']],
|
||||
\ ['gGg', "s/G/\\='\<C-V>\<C-J>'/", ["g\<C-V>", 'g']],
|
||||
\ ['hHh', "s/H/\\='\\\<C-V>\<C-J>'/", ["h\\\<C-V>", 'h']],
|
||||
\ ['iIi', "s/I/\\='\\\\\<C-V>\<C-J>'/", ["i\\\\\<C-V>", 'i']],
|
||||
\ ['jJj', "s/J/\\='\n'/", ['j', 'j']],
|
||||
\ ['kKk', 's/K/\="\r"/', ['k', 'k']],
|
||||
\ ['lLl', 's/L/\="\n"/', ['l', 'l']]
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
endfunc
|
||||
|
||||
" Test for submatch() on :substitue.
|
||||
func Test_sub_cmd_4()
|
||||
set magic&
|
||||
set cpo&
|
||||
|
||||
" List entry format: [input, cmd, output]
|
||||
let tests = [ ['aAa', "s/A/\\=substitute(submatch(0), '.', '\\', '')/",
|
||||
\ ['a\a']],
|
||||
\ ['bBb', "s/B/\\=substitute(submatch(0), '.', '\\', '')/",
|
||||
\ ['b\b']],
|
||||
\ ['cCc', "s/C/\\=substitute(submatch(0), '.', '\<C-V>\<C-M>', '')/",
|
||||
\ ["c\<C-V>", 'c']],
|
||||
\ ['dDd', "s/D/\\=substitute(submatch(0), '.', '\\\<C-V>\<C-M>', '')/",
|
||||
\ ["d\<C-V>", 'd']],
|
||||
\ ['eEe', "s/E/\\=substitute(submatch(0), '.', '\\\\\<C-V>\<C-M>', '')/",
|
||||
\ ["e\\\<C-V>", 'e']],
|
||||
\ ['fFf', "s/F/\\=substitute(submatch(0), '.', '\\r', '')/",
|
||||
\ ['f', 'f']],
|
||||
\ ['gGg', 's/G/\=substitute(submatch(0), ".", "\<C-V>\<C-J>", "")/',
|
||||
\ ["g\<C-V>", 'g']],
|
||||
\ ['hHh', 's/H/\=substitute(submatch(0), ".", "\\\<C-V>\<C-J>", "")/',
|
||||
\ ["h\<C-V>", 'h']],
|
||||
\ ['iIi', 's/I/\=substitute(submatch(0), ".", "\\\\\<C-V>\<C-J>", "")/',
|
||||
\ ["i\\\<C-V>", 'i']],
|
||||
\ ['jJj', "s/J/\\=substitute(submatch(0), '.', '\\n', '')/",
|
||||
\ ['j', 'j']],
|
||||
\ ['kKk', "s/K/\\=substitute(submatch(0), '.', '\\r', '')/",
|
||||
\ ['k', 'k']],
|
||||
\ ['lLl', "s/L/\\=substitute(submatch(0), '.', '\\n', '')/",
|
||||
\ ['l', 'l']],
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
endfunc
|
||||
|
||||
func Test_sub_cmd_5()
|
||||
set magic&
|
||||
set cpo&
|
||||
|
||||
" List entry format: [input, cmd, output]
|
||||
let tests = [ ['A123456789', 's/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)/', ['A123456789987654321']],
|
||||
\ ['B123456789', 's/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/', ["[['B123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]"]],
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
endfunc
|
||||
|
||||
" Test for *:s%* on :substitute.
|
||||
func Test_sub_cmd_6()
|
||||
set magic&
|
||||
set cpo+=/
|
||||
|
||||
" List entry format: [input, cmd, output]
|
||||
let tests = [ ['A', 's/A/a/', ['a']],
|
||||
\ ['B', 's/B/%/', ['a']],
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
|
||||
set cpo-=/
|
||||
let tests = [ ['C', 's/C/c/', ['c']],
|
||||
\ ['D', 's/D/%/', ['%']],
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
|
||||
set cpo&
|
||||
endfunc
|
||||
|
||||
" Test for :s replacing \n with line break.
|
||||
func Test_sub_cmd_7()
|
||||
set magic&
|
||||
set cpo&
|
||||
|
||||
" List entry format: [input, cmd, output]
|
||||
let tests = [ ["A\<C-V>\<C-M>A", 's/A./\=submatch(0)/', ['A', 'A']],
|
||||
\ ["B\<C-V>\<C-J>B", 's/B./\=submatch(0)/', ['B', 'B']],
|
||||
\ ["C\<C-V>\<C-J>C", 's/C./\=strtrans(string(submatch(0, 1)))/', [strtrans("['C\<C-J>']C")]],
|
||||
\ ["D\<C-V>\<C-J>\nD", 's/D.\nD/\=strtrans(string(submatch(0, 1)))/', [strtrans("['D\<C-J>', 'D']")]],
|
||||
\ ["E\<C-V>\<C-J>\n\<C-V>\<C-J>\n\<C-V>\<C-J>\n\<C-V>\<C-J>\n\<C-V>\<C-J>E", 's/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/', [strtrans("['E\<C-J>', '\<C-J>', '\<C-J>', '\<C-J>', '\<C-J>E']")]],
|
||||
\ ]
|
||||
call Run_SubCmd_Tests(tests)
|
||||
|
||||
exe "normal oQ\nQ\<Esc>k"
|
||||
call assert_fails('s/Q[^\n]Q/\=submatch(0)."foobar"/', 'E486')
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
func TitleString()
|
||||
let check = 'foo' =~ 'bar'
|
||||
return ""
|
||||
endfunc
|
||||
|
||||
func Test_sub_cmd_8()
|
||||
set titlestring=%{TitleString()}
|
||||
|
||||
enew!
|
||||
call append(0, ['', 'test_one', 'test_two'])
|
||||
call cursor(1,1)
|
||||
/^test_one/s/.*/\="foo\nbar"/
|
||||
call assert_equal('foo', getline(2))
|
||||
call assert_equal('bar', getline(3))
|
||||
call feedkeys(':/^test_two/s/.*/\="foo\nbar"/c', "t")
|
||||
call feedkeys("\<CR>y", "xt")
|
||||
call assert_equal('foo', getline(4))
|
||||
call assert_equal('bar', getline(5))
|
||||
|
||||
enew!
|
||||
set titlestring&
|
||||
endfunc
|
||||
|
45
src/testdir/test_tab.vim
Normal file
45
src/testdir/test_tab.vim
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
" Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
|
||||
" Also test that dv_ works correctly
|
||||
func Test_smarttab()
|
||||
enew!
|
||||
set smarttab expandtab ts=8 sw=4
|
||||
" make sure that backspace works, no matter what termcap is used
|
||||
exe "set t_kD=\<C-V>x7f t_kb=\<C-V>x08"
|
||||
call append(0, ['start text',
|
||||
\ "\t\tsome test text",
|
||||
\ 'test text',
|
||||
\ "\t\tother test text",
|
||||
\ ' a cde',
|
||||
\ ' f ghi',
|
||||
\ 'test text',
|
||||
\ ' Second line beginning with whitespace'
|
||||
\ ])
|
||||
call cursor(1, 1)
|
||||
exe "normal /some\<CR>"
|
||||
exe "normal r\t"
|
||||
call assert_equal("\t\t ome test text", getline('.'))
|
||||
set noexpandtab
|
||||
exe "normal /other\<CR>"
|
||||
exe "normal r\t"
|
||||
call assert_equal("\t\t ther test text", getline('.'))
|
||||
|
||||
" Test replacing with Tabs and then backspacing to undo it
|
||||
exe "normal j0wR\t\t\t\<BS>\<BS>\<BS>"
|
||||
call assert_equal(" a cde", getline('.'))
|
||||
" Test replacing with Tabs
|
||||
exe "normal j0wR\t\t\t"
|
||||
call assert_equal(" \t\thi", getline('.'))
|
||||
|
||||
" Test that copyindent works with expandtab set
|
||||
set expandtab smartindent copyindent ts=8 sw=8 sts=8
|
||||
exe "normal jo{\<CR>x"
|
||||
call assert_equal('{', getline(line('.') - 1))
|
||||
call assert_equal(' x', getline('.'))
|
||||
set nosol
|
||||
exe "normal /Second line/\<CR>"
|
||||
exe "normal fwdv_"
|
||||
call assert_equal(' with whitespace', getline('.'))
|
||||
enew!
|
||||
set expandtab& smartindent& copyindent& ts& sw& sts&
|
||||
endfunc
|
@@ -137,4 +137,41 @@ function Test_keyword_jump()
|
||||
call delete('Xinclude')
|
||||
endfunction
|
||||
|
||||
" Test for jumping to a tag with 'hidden' set, with symbolic link in path of
|
||||
" tag. This only works for Unix, because of the symbolic link.
|
||||
func Test_tag_symbolic()
|
||||
if !has('unix')
|
||||
return
|
||||
endif
|
||||
set hidden
|
||||
call delete("Xtest.dir", "rf")
|
||||
call system("ln -s . Xtest.dir")
|
||||
" Create a tags file with the current directory name inserted.
|
||||
call writefile([
|
||||
\ "SECTION_OFF " . getcwd() . "/Xtest.dir/Xtest.c /^#define SECTION_OFF 3$/",
|
||||
\ '',
|
||||
\ ], 'Xtags')
|
||||
call writefile(['#define SECTION_OFF 3',
|
||||
\ '#define NUM_SECTIONS 3'], 'Xtest.c')
|
||||
|
||||
" Try jumping to a tag, but with a path that contains a symbolic link. When
|
||||
" wrong, this will give the ATTENTION message. The next space will then be
|
||||
" eaten by hit-return, instead of moving the cursor to 'd'.
|
||||
set tags=Xtags
|
||||
enew!
|
||||
call append(0, 'SECTION_OFF')
|
||||
call cursor(1,1)
|
||||
exe "normal \<C-]> "
|
||||
call assert_equal('Xtest.c', expand('%:t'))
|
||||
call assert_equal(2, col('.'))
|
||||
|
||||
set hidden&
|
||||
set tags&
|
||||
enew!
|
||||
call delete('Xtags')
|
||||
call delete('Xtest.c')
|
||||
call delete("Xtest.dir", "rf")
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@@ -273,3 +273,19 @@ func Test_undofile_earlier()
|
||||
call delete('Xfile')
|
||||
call delete('Xundofile')
|
||||
endfunc
|
||||
|
||||
" Test for undo working properly when executing commands from a register.
|
||||
" Also test this in an empty buffer.
|
||||
func Test_cmd_in_reg_undo()
|
||||
enew!
|
||||
let @a="Ox\<Esc>jAy\<Esc>kdd"
|
||||
edit +/^$ test_undo.vim
|
||||
normal @au
|
||||
call assert_equal(0, &modified)
|
||||
return
|
||||
new
|
||||
normal @au
|
||||
call assert_equal(0, &modified)
|
||||
only!
|
||||
let @a=''
|
||||
endfunc
|
||||
|
@@ -89,3 +89,101 @@ func Test_visual_mode_reset()
|
||||
|
||||
endfunc
|
||||
|
||||
" Test for visual block shift and tab characters.
|
||||
func Test_block_shift_tab()
|
||||
enew!
|
||||
call append(0, repeat(['one two three'], 5))
|
||||
call cursor(1,1)
|
||||
exe "normal i\<C-G>u"
|
||||
exe "normal fe\<C-V>4jR\<Esc>ugvr1"
|
||||
call assert_equal('on1 two three', getline(1))
|
||||
call assert_equal('on1 two three', getline(2))
|
||||
call assert_equal('on1 two three', getline(5))
|
||||
|
||||
enew!
|
||||
call append(0, repeat(['abcdefghijklmnopqrstuvwxyz'], 5))
|
||||
call cursor(1,1)
|
||||
exe "normal \<C-V>4jI \<Esc>j<<11|D"
|
||||
exe "normal j7|a\<Tab>\<Tab>"
|
||||
exe "normal j7|a\<Tab>\<Tab> "
|
||||
exe "normal j7|a\<Tab> \<Tab>\<Esc>4k13|\<C-V>4j<"
|
||||
call assert_equal(' abcdefghijklmnopqrstuvwxyz', getline(1))
|
||||
call assert_equal('abcdefghij', getline(2))
|
||||
call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(3))
|
||||
call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(4))
|
||||
call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(5))
|
||||
|
||||
%s/\s\+//g
|
||||
call cursor(1,1)
|
||||
exe "normal \<C-V>4jI \<Esc>j<<"
|
||||
exe "normal j7|a\<Tab>\<Tab>"
|
||||
exe "normal j7|a\<Tab>\<Tab>\<Tab>\<Tab>\<Tab>"
|
||||
exe "normal j7|a\<Tab> \<Tab>\<Tab>\<Esc>4k13|\<C-V>4j3<"
|
||||
call assert_equal(' abcdefghijklmnopqrstuvwxyz', getline(1))
|
||||
call assert_equal('abcdefghij', getline(2))
|
||||
call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(3))
|
||||
call assert_equal(" abc\<Tab>\<Tab>defghijklmnopqrstuvwxyz", getline(4))
|
||||
call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(5))
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
" Tests Blockwise Visual when there are TABs before the text.
|
||||
func Test_blockwise_visual()
|
||||
enew!
|
||||
call append(0, ['123456',
|
||||
\ '234567',
|
||||
\ '345678',
|
||||
\ '',
|
||||
\ 'test text test tex start here',
|
||||
\ "\t\tsome text",
|
||||
\ "\t\ttest text",
|
||||
\ 'test text'])
|
||||
call cursor(1,1)
|
||||
exe "normal /start here$\<CR>"
|
||||
exe 'normal "by$' . "\<C-V>jjlld"
|
||||
exe "normal /456$\<CR>"
|
||||
exe "normal \<C-V>jj" . '"bP'
|
||||
call assert_equal(['123start here56',
|
||||
\ '234start here67',
|
||||
\ '345start here78',
|
||||
\ '',
|
||||
\ 'test text test tex rt here',
|
||||
\ "\t\tsomext",
|
||||
\ "\t\ttesext"], getline(1, 7))
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
" Test Virtual replace mode.
|
||||
func Test_virtual_replace()
|
||||
exe "set t_kD=\<C-V>x7f t_kb=\<C-V>x08"
|
||||
enew!
|
||||
exe "normal a\nabcdefghi\njk\tlmn\n opq rst\n\<C-D>uvwxyz"
|
||||
call cursor(1,1)
|
||||
set ai bs=2
|
||||
exe "normal gR0\<C-D> 1\nA\nBCDEFGHIJ\n\tKL\nMNO\nPQR"
|
||||
call assert_equal([' 1',
|
||||
\ ' A',
|
||||
\ ' BCDEFGHIJ',
|
||||
\ ' KL',
|
||||
\ ' MNO',
|
||||
\ ' PQR',
|
||||
\ ], getline(1, 6))
|
||||
normal G
|
||||
mark a
|
||||
exe "normal o0\<C-D>\nabcdefghi\njk\tlmn\n opq\trst\n\<C-D>uvwxyz\n"
|
||||
exe "normal 'ajgR0\<C-D> 1\nA\nBCDEFGHIJ\n\tKL\nMNO\nPQR" . repeat("\<BS>", 29)
|
||||
call assert_equal([' 1',
|
||||
\ 'abcdefghi',
|
||||
\ 'jk lmn',
|
||||
\ ' opq rst',
|
||||
\ 'uvwxyz'], getline(7, 11))
|
||||
normal G
|
||||
exe "normal iab\tcdefghi\tjkl"
|
||||
exe "normal 0gRAB......CDEFGHI.J\<Esc>o"
|
||||
exe "normal iabcdefghijklmnopqrst\<Esc>0gRAB\tIJKLMNO\tQR"
|
||||
call assert_equal(['AB......CDEFGHI.Jkl',
|
||||
\ 'AB IJKLMNO QRst'], getline(12, 13))
|
||||
enew!
|
||||
endfunc
|
||||
|
@@ -761,6 +761,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1221,
|
||||
/**/
|
||||
1220,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user