vim-patch:8.0.1302: 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 vim/vim#2326)

209d3874c1
This commit is contained in:
Justin M. Keyes 2018-02-11 23:04:32 +01:00
parent 04993f220a
commit ef39f854d7
10 changed files with 646 additions and 190 deletions

View File

@ -23,7 +23,6 @@ SCRIPTS_DEFAULT = \
test49.out \
test52.out \
test64.out \
test73.out \
ifneq ($(OS),Windows_NT)
SCRIPTS_DEFAULTS := $(SCRIPTS_DEFAULT) \
@ -42,17 +41,21 @@ NEW_TESTS ?= \
test_changedtick.res \
test_charsearch.res \
test_cindent.res \
test_close_count.res \
test_cmdline.res \
test_command_count.res \
test_cscope.res \
test_curswant.res \
test_digraph.res \
test_edit.res \
test_erasebackword.res \
test_exists.res \
test_diffmode.res \
test_farsi.res \
test_file_size.res \
test_filter_map.res \
test_find_complete.res \
test_fixeol.res \
test_findfile.res \
test_fnameescape.res \
test_fold.res \
@ -73,6 +76,7 @@ NEW_TESTS ?= \
test_listlbr.res \
test_let.res \
test_lineending.res \
test_listchars.res \
test_makeencoding.res \
test_marks.res \
test_match.res \

View File

@ -95,6 +95,10 @@ func RunTheTest(test)
" buffers.
%bwipe!
" The test may change the current directory. Save and restore the
" directory after executing the test.
let save_cwd = getcwd()
if exists("*SetUp")
try
call SetUp()
@ -149,6 +153,8 @@ func RunTheTest(test)
break
endif
endwhile
exe 'cd ' . save_cwd
endfunc
func AfterTheTest()

View File

@ -1,168 +0,0 @@
Tests for find completion.
STARTTEST
:set wildmode=full
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:"
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call delete("Xfind", "rf")
:new
:let cwd=getcwd()
:let test_out = cwd . '/test.out'
:call mkdir('Xfind')
:cd Xfind
:set path=
:find
:exec "w! " . test_out
:close
:new
:set path=.
:find
:exec "w >>" . test_out
:close
:new
:set path=.,,
:find
:exec "w >>" . test_out
:close
:new
:set path=./**
:find
:exec "w >>" . test_out
:close
:new
:" We shouldn't find any file at this point, test.out must be empty.
:call mkdir('in')
:cd in
:call mkdir('path')
:exec "cd " . cwd
:e Xfind/file.txt
SHoly Grail:w
:e Xfind/in/file.txt
SJimmy Hoffa:w
:e Xfind/in/stuff.txt
SAnother Holy Grail:w
:e Xfind/in/path/file.txt
SE.T.:w
:set path=Xfind/**
:find file
:exec "w >>" . test_out
:find file
:exec "w >>" . test_out
:find file
:exec "w >>" . test_out
:" Rerun the previous three find completions, using fullpath in 'path'
:exec "set path=" . cwd . "/Xfind/**"
:find file
:exec "w >>" . test_out
:find file
:exec "w >>" . test_out
:find file
:exec "w >>" . test_out
:" Same steps again, using relative and fullpath items that point to the same
:" recursive location.
:" This is to test that there are no duplicates in the completion list.
:exec "set path+=Xfind/**"
:find file
:exec "w >>" . test_out
:find file
:exec "w >>" . test_out
:find file
:exec "w >>" . test_out
:find file
:" Test find completion for directory of current buffer, which at this point
:" is Xfind/in/file.txt.
:set path=.
:find st
:exec "w >>" . test_out
:" Test find completion for empty path item ",," which is the current directory
:cd Xfind
:set path=,,
:find f
:exec "w >>" . test_out
:" Test shortening of
:"
:" foo/x/bar/voyager.txt
:" foo/y/bar/voyager.txt
:"
:" When current directory is above foo/ they should be shortened to (in order
:" of appearance):
:"
:" x/bar/voyager.txt
:" y/bar/voyager.txt
:call mkdir('foo')
:cd foo
:call mkdir('x')
:call mkdir('y')
:cd x
:call mkdir('bar')
:cd ..
:cd y
:call mkdir('bar')
:cd ..
:cd ..
:" We should now be in the Xfind directory
:e foo/x/bar/voyager.txt
SVoyager 1:w
:e foo/y/bar/voyager.txt
SVoyager 2:w
:exec "set path=" . cwd . "/Xfind/**"
:find voyager
:exec "w >>" . test_out
:find voyager
:exec "w >>" . test_out
:"
:" When current directory is .../foo/y/bar they should be shortened to (in
:" order of appearance):
:"
:" ./voyager.txt
:" x/bar/voyager.txt
:cd foo
:cd y
:cd bar
:find voyager
:exec "w >> " . test_out
:find voyager
:exec "w >> " . test_out
:" Check the opposite too:
:cd ..
:cd ..
:cd x
:cd bar
:find voyager
:exec "w >> " . test_out
:find voyager
:exec "w >> " . test_out
:" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
:find file
:exec "w >>" . test_out
:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
:exec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu
:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call delete("Xfind", "rf")
:qa!
ENDTEST

View File

@ -1,21 +0,0 @@
Holy Grail
Jimmy Hoffa
E.T.
Holy Grail
Jimmy Hoffa
E.T.
Holy Grail
Jimmy Hoffa
E.T.
Another Holy Grail
Holy Grail
Voyager 1
Voyager 2
Voyager 2
Voyager 1
Voyager 1
Voyager 2
Jimmy Hoffa
E.T.
Jimmy Hoffa
Another Holy Grail

View File

@ -0,0 +1,174 @@
" Tests for :[count]close! command
func Test_close_count()
enew! | only
let wids = [win_getid()]
for i in range(5)
new
call add(wids, win_getid())
endfor
4wincmd w
close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids)
1close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids)
$close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[3], wids[1]], ids)
1wincmd w
2close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[1]], ids)
1wincmd w
new
call add(wids, win_getid())
new
call add(wids, win_getid())
2wincmd w
-1close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[6], wids[4], wids[1]], ids)
2wincmd w
+1close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[6], wids[4]], ids)
only!
endfunc
" Tests for :[count]hide command
func Test_hide_count()
enew! | only
let wids = [win_getid()]
for i in range(5)
new
call add(wids, win_getid())
endfor
4wincmd w
.hide
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids)
1hide
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids)
$hide
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[3], wids[1]], ids)
1wincmd w
2hide
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[1]], ids)
1wincmd w
new
call add(wids, win_getid())
new
call add(wids, win_getid())
3wincmd w
-hide
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[7], wids[4], wids[1]], ids)
2wincmd w
+hide
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[7], wids[4]], ids)
only!
endfunc
" Tests for :[count]close! command with 'hidden'
func Test_hidden_close_count()
enew! | only
let wids = [win_getid()]
for i in range(5)
new
call add(wids, win_getid())
endfor
set hidden
$ hide
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[5], wids[4], wids[3], wids[2], wids[1]], ids)
$-1 close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[5], wids[4], wids[3], wids[1]], ids)
1wincmd w
.+close!
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[5], wids[3], wids[1]], ids)
set nohidden
only!
endfunc
" Tests for 'CTRL-W c' command to close windows.
func Test_winclose_command()
enew! | only
let wids = [win_getid()]
for i in range(5)
new
call add(wids, win_getid())
endfor
set hidden
4wincmd w
exe "normal \<C-W>c"
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids)
exe "normal 1\<C-W>c"
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids)
exe "normal 9\<C-W>c"
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[3], wids[1]], ids)
1wincmd w
exe "normal 2\<C-W>c"
let ids = []
windo call add(ids, win_getid())
call assert_equal([wids[4], wids[1]], ids)
set nohidden
only!
endfunc

View File

@ -0,0 +1,25 @@
func Test_erasebackword()
if !has('multi_byte')
return
endif
set encoding=utf-8
enew
exe "normal o wwwこんにちわ世界ワールドvim \<C-W>"
call assert_equal(' wwwこんにちわ世界ワールド', getline('.'))
exe "normal o wwwこんにちわ世界ワールドvim \<C-W>\<C-W>"
call assert_equal(' wwwこんにちわ世界', getline('.'))
exe "normal o wwwこんにちわ世界ワールドvim \<C-W>\<C-W>\<C-W>"
call assert_equal(' wwwこんにちわ', getline('.'))
exe "normal o wwwこんにちわ世界ワールドvim \<C-W>\<C-W>\<C-W>\<C-W>"
call assert_equal(' www', getline('.'))
exe "normal o wwwこんにちわ世界ワールドvim \<C-W>\<C-W>\<C-W>\<C-W>\<C-W>"
call assert_equal(' ', getline('.'))
exe "normal o wwwこんにちわ世界ワールドvim \<C-W>\<C-W>\<C-W>\<C-W>\<C-W>\<C-W>"
call assert_equal('', getline('.'))
enew!
set encoding&
endfunc

View File

@ -0,0 +1,157 @@
" Tests for the 'find' command completion.
" Do all the tests in a separate window to avoid E211 when we recursively
" delete the Xfind directory during cleanup
func Test_find_complete()
set belloff=all
" On windows a stale "Xfind" directory may exist, remove it so that
" we start from a clean state.
call delete("Xfind", "rf")
let cwd = getcwd()
let test_out = cwd . '/test.out'
call mkdir('Xfind')
cd Xfind
new
set path=
call assert_fails('call feedkeys(":find\t\n", "xt")', 'E345:')
close
new
set path=.
call assert_fails('call feedkeys(":find\t\n", "xt")', 'E32:')
close
new
set path=.,,
call assert_fails('call feedkeys(":find\t\n", "xt")', 'E32:')
close
new
set path=./**
call assert_fails('call feedkeys(":find\t\n", "xt")', 'E32:')
close
" We shouldn't find any file till this point
call mkdir('in/path', 'p')
exe 'cd ' . cwd
call writefile(['Holy Grail'], 'Xfind/file.txt')
call writefile(['Jimmy Hoffa'], 'Xfind/in/file.txt')
call writefile(['Another Holy Grail'], 'Xfind/in/stuff.txt')
call writefile(['E.T.'], 'Xfind/in/path/file.txt')
new
set path=Xfind/**
call feedkeys(":find file\t\n", "xt")
call assert_equal('Holy Grail', getline(1))
call feedkeys(":find file\t\t\n", "xt")
call assert_equal('Jimmy Hoffa', getline(1))
call feedkeys(":find file\t\t\t\n", "xt")
call assert_equal('E.T.', getline(1))
" Rerun the previous three find completions, using fullpath in 'path'
exec "set path=" . cwd . "/Xfind/**"
call feedkeys(":find file\t\n", "xt")
call assert_equal('Holy Grail', getline(1))
call feedkeys(":find file\t\t\n", "xt")
call assert_equal('Jimmy Hoffa', getline(1))
call feedkeys(":find file\t\t\t\n", "xt")
call assert_equal('E.T.', getline(1))
" Same steps again, using relative and fullpath items that point to the same
" recursive location.
" This is to test that there are no duplicates in the completion list.
set path+=Xfind/**
call feedkeys(":find file\t\n", "xt")
call assert_equal('Holy Grail', getline(1))
call feedkeys(":find file\t\t\n", "xt")
call assert_equal('Jimmy Hoffa', getline(1))
call feedkeys(":find file\t\t\t\n", "xt")
call assert_equal('E.T.', getline(1))
call feedkeys(":find file\t\t\n", "xt")
" Test find completion for directory of current buffer, which at this point
" is Xfind/in/file.txt.
set path=.
call feedkeys(":find st\t\n", "xt")
call assert_equal('Another Holy Grail', getline(1))
" Test find completion for empty path item ",," which is the current
" directory
cd Xfind
set path=,,
call feedkeys(":find f\t\n", "xt")
call assert_equal('Holy Grail', getline(1))
" Test shortening of
"
" foo/x/bar/voyager.txt
" foo/y/bar/voyager.txt
"
" When current directory is above foo/ they should be shortened to (in order
" of appearance):
"
" x/bar/voyager.txt
" y/bar/voyager.txt
call mkdir('foo/x/bar', 'p')
call mkdir('foo/y/bar', 'p')
call writefile(['Voyager 1'], 'foo/x/bar/voyager.txt')
call writefile(['Voyager 2'], 'foo/y/bar/voyager.txt')
exec "set path=" . cwd . "/Xfind/**"
call feedkeys(":find voyager\t\n", "xt")
call assert_equal('Voyager 1', getline(1))
call feedkeys(":find voyager\t\t\n", "xt")
call assert_equal('Voyager 2', getline(1))
"
" When current directory is .../foo/y/bar they should be shortened to (in
" order of appearance):
"
" ./voyager.txt
" x/bar/voyager.txt
cd foo/y/bar
call feedkeys(":find voyager\t\n", "xt")
call assert_equal('Voyager 2', getline(1))
call feedkeys(":find voyager\t\t\n", "xt")
call assert_equal('Voyager 1', getline(1))
" Check the opposite too:
cd ../../x/bar
call feedkeys(":find voyager\t\n", "xt")
call assert_equal('Voyager 1', getline(1))
call feedkeys(":find voyager\t\t\n", "xt")
call assert_equal('Voyager 2', getline(1))
" Check for correct handling of shorten_fname()'s behavior on windows
exec "cd " . cwd . "/Xfind/in"
call feedkeys(":find file\t\n", "xt")
call assert_equal('Jimmy Hoffa', getline(1))
" Test for relative to current buffer 'path' item
exec "cd " . cwd . "/Xfind/"
set path=./path
" Open the file where Jimmy Hoffa is found
e in/file.txt
" Find the file containing 'E.T.' in the Xfind/in/path directory
call feedkeys(":find file\t\n", "xt")
call assert_equal('E.T.', getline(1))
" Test that completion works when path=.,,
set path=.,,
" Open Jimmy Hoffa file
e in/file.txt
call assert_equal('Jimmy Hoffa', getline(1))
" Search for the file containing Holy Grail in same directory as in/path.txt
call feedkeys(":find stu\t\n", "xt")
call assert_equal('Another Holy Grail', getline(1))
enew | only
exe 'cd ' . cwd
call delete('Xfind', 'rf')
set path&
endfunc

View File

@ -0,0 +1,48 @@
" Tests for 'fixeol' and 'eol'
func Test_fixeol()
" first write two test files with and without trailing EOL
" use Unix fileformat for consistency
set ff=unix
enew!
call setline('.', 'with eol')
w! XXEol
enew!
set noeol nofixeol
call setline('.', 'without eol')
w! XXNoEol
set eol fixeol
bwipe XXEol XXNoEol
" try editing files with 'fixeol' disabled
e! XXEol
normal ostays eol
set nofixeol
w! XXTestEol
e! XXNoEol
normal ostays without
set nofixeol
w! XXTestNoEol
bwipe! XXEol XXNoEol XXTestEol XXTestNoEol
set fixeol
" Append "END" to each file so that we can see what the last written char
" was.
normal ggdGaEND
w >>XXEol
w >>XXNoEol
w >>XXTestEol
w >>XXTestNoEol
call assert_equal(['with eol', 'END'], readfile('XXEol'))
call assert_equal(['without eolEND'], readfile('XXNoEol'))
call assert_equal(['with eol', 'stays eol', 'END'], readfile('XXTestEol'))
call assert_equal(['without eol', 'stays withoutEND'],
\ readfile('XXTestNoEol'))
call delete('XXEol')
call delete('XXNoEol')
call delete('XXTestEol')
call delete('XXTestNoEol')
set ff& fixeol& eol&
enew!
endfunc

View File

@ -0,0 +1,63 @@
" Tests for 'listchars' display with 'list' and :list
source view_util.vim
func Test_listchars()
enew!
set ff=unix
set list
set listchars+=tab:>-,space:.,trail:<
call append(0, [
\ ' aa ',
\ ' bb ',
\ ' cccc ',
\ 'dd ee ',
\ ' '
\ ])
let expected = [
\ '>-------aa>-----$',
\ '..bb>---<<$',
\ '...cccc><$',
\ 'dd........ee<<>-$',
\ '<$'
\ ]
redraw!
for i in range(1, 5)
call cursor(i, 1)
call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
endfor
set listchars-=trail:<
let expected = [
\ '>-------aa>-----$',
\ '..bb>---..$',
\ '...cccc>.$',
\ 'dd........ee..>-$',
\ '.$'
\ ]
redraw!
for i in range(1, 5)
call cursor(i, 1)
call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
endfor
set listchars+=trail:<
set nolist
normal ggdG
call append(0, [
\ ' fff ',
\ ' gg ',
\ ' h ',
\ 'iii ',
\ ])
let l = split(execute("%list"), "\n")
call assert_equal([
\ '..fff>--<<$',
\ '>-------gg>-----$',
\ '.....h>-$',
\ 'iii<<<<><<$', '$'], l)
enew!
set listchars& ff&
endfunc

View File

@ -0,0 +1,168 @@
" Tests for the various 'formatoptions' settings
func Test_text_format()
enew!
setl noai tw=2 fo=t
call append('$', [
\ '{',
\ ' ',
\ '',
\ '}'])
exe "normal /^{/+1\n0"
normal gRa b
let lnum = line('.')
call assert_equal([
\ 'a',
\ 'b'], getline(lnum - 1, lnum))
normal ggdG
setl ai tw=2 fo=tw
call append('$', [
\ '{',
\ 'a b ',
\ '',
\ 'a ',
\ '}'])
exe "normal /^{/+1\n0"
normal gqgqjjllab
let lnum = line('.')
call assert_equal([
\ 'a ',
\ 'b ',
\ '',
\ 'a ',
\ 'b'], getline(lnum - 4, lnum))
normal ggdG
setl tw=3 fo=t
call append('$', [
\ '{',
\ "a \<C-A>",
\ '}'])
exe "normal /^{/+1\n0"
exe "normal gqgqo\na \<C-V>\<C-A>"
let lnum = line('.')
call assert_equal([
\ 'a',
\ "\<C-A>",
\ '',
\ 'a',
\ "\<C-A>"], getline(lnum - 4, lnum))
normal ggdG
setl tw=2 fo=tcq1 comments=:#
call append('$', [
\ '{',
\ 'a b',
\ '#a b',
\ '}'])
exe "normal /^{/+1\n0"
exe "normal gqgqjgqgqo\na b\n#a b"
let lnum = line('.')
call assert_equal([
\ 'a b',
\ '#a b',
\ '',
\ 'a b',
\ '#a b'], getline(lnum - 4, lnum))
normal ggdG
setl tw=5 fo=tcn comments=:#
call append('$', [
\ '{',
\ ' 1 a',
\ '# 1 a',
\ '}'])
exe "normal /^{/+1\n0"
exe "normal A b\<Esc>jA b"
let lnum = line('.')
call assert_equal([
\ ' 1 a',
\ ' b',
\ '# 1 a',
\ '# b'], getline(lnum - 3, lnum))
normal ggdG
setl tw=5 fo=t2a si
call append('$', [
\ '{',
\ '',
\ ' x a',
\ ' b',
\ ' c',
\ '',
\ '}'])
exe "normal /^{/+3\n0"
exe "normal i \<Esc>A_"
let lnum = line('.')
call assert_equal([
\ '',
\ ' x a',
\ ' b_',
\ ' c',
\ ''], getline(lnum - 2, lnum + 2))
normal ggdG
setl tw=5 fo=qn comments=:#
call append('$', [
\ '{',
\ '# 1 a b',
\ '}'])
exe "normal /^{/+1\n5|"
normal gwap
call assert_equal(5, col('.'))
let lnum = line('.')
call assert_equal([
\ '# 1 a',
\ '# b'], getline(lnum, lnum + 1))
normal ggdG
setl tw=5 fo=q2 comments=:#
call append('$', [
\ '{',
\ '# x',
\ '# a b',
\ '}'])
exe "normal /^{/+1\n0"
normal gwap
let lnum = line('.')
call assert_equal([
\ '# x a',
\ '# b'], getline(lnum, lnum + 1))
normal ggdG
setl tw& fo=a
call append('$', [
\ '{',
\ ' 1aa',
\ ' 2bb',
\ '}'])
exe "normal /^{/+2\n0"
normal I^^
call assert_equal('{ 1aa ^^2bb }', getline('.'))
normal ggdG
setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
call append('$', [
\ '/* abc def ghi jkl ',
\ ' * mno pqr stu',
\ ' */'])
exe "normal /mno pqr/\n"
normal A vwx yz
let lnum = line('.')
call assert_equal([
\ ' * mno pqr stu ',
\ ' * vwx yz',
\ ' */'], getline(lnum - 1, lnum + 1))
normal ggdG
setl tw=12 fo=tqnc comments=:#
call setline('.', '# 1 xxxxx')
normal A foobar
call assert_equal([
\ '# 1 xxxxx',
\ '# foobar'], getline(1, 2))
setl ai& tw& fo& si& comments&
enew!
endfunc