mirror of
https://github.com/neovim/neovim.git
synced 2025-10-01 07:28:34 +00:00
Merge #8063 from blueyed/vim-8.0.0708
This commit is contained in:
@@ -15,7 +15,6 @@ export TMPDIR := $(abspath ../../../Xtest-tmpdir)
|
|||||||
|
|
||||||
SCRIPTS_DEFAULT = \
|
SCRIPTS_DEFAULT = \
|
||||||
test14.out \
|
test14.out \
|
||||||
test24.out \
|
|
||||||
test37.out \
|
test37.out \
|
||||||
test42.out \
|
test42.out \
|
||||||
test48.out \
|
test48.out \
|
||||||
@@ -35,7 +34,7 @@ SCRIPTS ?= $(SCRIPTS_DEFAULT)
|
|||||||
NEW_TESTS_ALOT := test_alot_utf8 test_alot
|
NEW_TESTS_ALOT := test_alot_utf8 test_alot
|
||||||
NEW_TESTS_IN_ALOT := $(shell sed '/^source/ s/^source //;s/\.vim$$//' test_alot*.vim)
|
NEW_TESTS_IN_ALOT := $(shell sed '/^source/ s/^source //;s/\.vim$$//' test_alot*.vim)
|
||||||
# Ignored tests.
|
# Ignored tests.
|
||||||
# test_alot_latin1: Nvim does not allow setting encoding.
|
# test_alot_latin: Nvim does not allow setting encoding.
|
||||||
# test_arglist: ported to Lua, but kept for easier merging.
|
# test_arglist: ported to Lua, but kept for easier merging.
|
||||||
# test_autochdir: ported to Lua, but kept for easier merging.
|
# test_autochdir: ported to Lua, but kept for easier merging.
|
||||||
# test_eval_func: used as include in old-style test (test_eval.in).
|
# test_eval_func: used as include in old-style test (test_eval.in).
|
||||||
|
Binary file not shown.
@@ -1,32 +0,0 @@
|
|||||||
start
|
|
||||||
test text test text
|
|
||||||
test text test text
|
|
||||||
test text test text
|
|
||||||
test text test text
|
|
||||||
test text test text
|
|
||||||
test text test text
|
|
||||||
test text test text x61
|
|
||||||
test text test text x60-x64
|
|
||||||
test text test text x78 5
|
|
||||||
test text test text o143
|
|
||||||
test text test text o140-o144
|
|
||||||
test text test text o41 7
|
|
||||||
test text test text \%x42
|
|
||||||
test text test text \%o103
|
|
||||||
test text test text [\x00]
|
|
||||||
test text test text [\x00-\x10]
|
|
||||||
test text test text [\x-z]
|
|
||||||
test text test text [\u-z]
|
|
||||||
xx xx a
|
|
||||||
xx aaaaa xx a
|
|
||||||
xx aaaaa xx a
|
|
||||||
xx Aaa xx
|
|
||||||
xx Aaaa xx
|
|
||||||
xx Aaa xx
|
|
||||||
xx foobar xA xx
|
|
||||||
xx an A xx
|
|
||||||
XX 9;
|
|
||||||
YY 77;
|
|
||||||
xyz
|
|
||||||
bcd
|
|
||||||
BB
|
|
9
src/nvim/testdir/test_comparators.vim
Normal file
9
src/nvim/testdir/test_comparators.vim
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function Test_Comparators()
|
||||||
|
try
|
||||||
|
let oldisident=&isident
|
||||||
|
set isident+=#
|
||||||
|
call assert_equal(1, 1 is#1)
|
||||||
|
finally
|
||||||
|
let &isident=oldisident
|
||||||
|
endtry
|
||||||
|
endfunction
|
33
src/nvim/testdir/test_escaped_glob.vim
Normal file
33
src/nvim/testdir/test_escaped_glob.vim
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
" Test whether glob()/globpath() return correct results with certain escaped
|
||||||
|
" characters.
|
||||||
|
|
||||||
|
function SetUp()
|
||||||
|
" make sure glob() doesn't use the shell
|
||||||
|
set shell=doesnotexist
|
||||||
|
" consistent sorting of file names
|
||||||
|
set nofileignorecase
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function Test_glob()
|
||||||
|
if !has('unix')
|
||||||
|
" This test fails on Windows because of the special characters in the
|
||||||
|
" filenames. Disable the test on non-Unix systems for now.
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
call assert_equal("", glob('Xxx\{'))
|
||||||
|
call assert_equal("", glob('Xxx\$'))
|
||||||
|
w! Xxx{
|
||||||
|
w! Xxx\$
|
||||||
|
call assert_equal("Xxx{", glob('Xxx\{'))
|
||||||
|
call assert_equal("Xxx$", glob('Xxx\$'))
|
||||||
|
call delete('Xxx{')
|
||||||
|
call delete('Xxx$')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function Test_globpath()
|
||||||
|
let slash = (!exists('+shellslash') || &shellslash) ? '/' : '\'
|
||||||
|
call assert_equal('sautest'.slash.'autoload'.slash.'footest.vim',
|
||||||
|
\ globpath('sautest/autoload', '*.vim'))
|
||||||
|
call assert_equal(['sautest'.slash.'autoload'.slash.'footest.vim'],
|
||||||
|
\ globpath('sautest/autoload', '*.vim', 0, 1))
|
||||||
|
endfunction
|
53
src/nvim/testdir/test_exec_while_if.vim
Normal file
53
src/nvim/testdir/test_exec_while_if.vim
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
" Test for :execute, :while and :if
|
||||||
|
|
||||||
|
function Test_exec_while_if()
|
||||||
|
new
|
||||||
|
|
||||||
|
let i = 0
|
||||||
|
while i < 12
|
||||||
|
let i = i + 1
|
||||||
|
if has("ebcdic")
|
||||||
|
execute "normal o" . i . "\047"
|
||||||
|
else
|
||||||
|
execute "normal o" . i . "\033"
|
||||||
|
endif
|
||||||
|
if i % 2
|
||||||
|
normal Ax
|
||||||
|
if i == 9
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
if i == 5
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
let j = 9
|
||||||
|
while j > 0
|
||||||
|
if has("ebcdic")
|
||||||
|
execute "normal" j . "a" . j . "\x27"
|
||||||
|
else
|
||||||
|
execute "normal" j . "a" . j . "\x1b"
|
||||||
|
endif
|
||||||
|
let j = j - 1
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if i == 9
|
||||||
|
if has("ebcdic")
|
||||||
|
execute "normal Az\047"
|
||||||
|
else
|
||||||
|
execute "normal Az\033"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
unlet i j
|
||||||
|
|
||||||
|
call assert_equal(["",
|
||||||
|
\ "1x999999999888888887777777666666555554444333221",
|
||||||
|
\ "2",
|
||||||
|
\ "3x999999999888888887777777666666555554444333221",
|
||||||
|
\ "4",
|
||||||
|
\ "5x",
|
||||||
|
\ "6",
|
||||||
|
\ "7x999999999888888887777777666666555554444333221",
|
||||||
|
\ "8",
|
||||||
|
\ "9x"], getline(1, 10))
|
||||||
|
endfunction
|
26
src/nvim/testdir/test_exists_autocmd.vim
Normal file
26
src/nvim/testdir/test_exists_autocmd.vim
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
" Test that groups and patterns are tested correctly when calling exists() for
|
||||||
|
" autocommands.
|
||||||
|
|
||||||
|
function Test_AutoCommands()
|
||||||
|
let results=[]
|
||||||
|
augroup auexists
|
||||||
|
augroup END
|
||||||
|
call assert_true(exists("##BufEnter"))
|
||||||
|
call assert_false(exists("#BufEnter"))
|
||||||
|
au BufEnter * let g:entered=1
|
||||||
|
call assert_true(exists("#BufEnter"))
|
||||||
|
call assert_false(exists("#auexists#BufEnter"))
|
||||||
|
augroup auexists
|
||||||
|
au BufEnter * let g:entered=1
|
||||||
|
augroup END
|
||||||
|
call assert_true(exists("#auexists#BufEnter"))
|
||||||
|
call assert_false(exists("#BufEnter#*.test"))
|
||||||
|
au BufEnter *.test let g:entered=1
|
||||||
|
call assert_true(exists("#BufEnter#*.test"))
|
||||||
|
edit testfile.test
|
||||||
|
call assert_false(exists("#BufEnter#<buffer>"))
|
||||||
|
au BufEnter <buffer> let g:entered=1
|
||||||
|
call assert_true(exists("#BufEnter#<buffer>"))
|
||||||
|
edit testfile2.test
|
||||||
|
call assert_false(exists("#BufEnter#<buffer>"))
|
||||||
|
endfunction
|
91
src/nvim/testdir/test_getcwd.vim
Normal file
91
src/nvim/testdir/test_getcwd.vim
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
function! GetCwdInfo(win, tab)
|
||||||
|
let tab_changed = 0
|
||||||
|
let mod = ":t"
|
||||||
|
if a:tab > 0 && a:tab != tabpagenr()
|
||||||
|
let tab_changed = 1
|
||||||
|
exec "tabnext " . a:tab
|
||||||
|
endif
|
||||||
|
let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
|
||||||
|
if tab_changed
|
||||||
|
tabprevious
|
||||||
|
endif
|
||||||
|
if a:win == 0 && a:tab == 0
|
||||||
|
let dirname = fnamemodify(getcwd(), mod)
|
||||||
|
let lflag = haslocaldir()
|
||||||
|
elseif a:tab == 0
|
||||||
|
let dirname = fnamemodify(getcwd(a:win), mod)
|
||||||
|
let lflag = haslocaldir(a:win)
|
||||||
|
else
|
||||||
|
let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
|
||||||
|
let lflag = haslocaldir(a:win, a:tab)
|
||||||
|
endif
|
||||||
|
return bufname . ' ' . dirname . ' ' . lflag
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Do all test in a separate window to avoid E211 when we recursively
|
||||||
|
" delete the Xtopdir directory during cleanup
|
||||||
|
function SetUp()
|
||||||
|
set visualbell
|
||||||
|
set nocp viminfo+=nviminfo
|
||||||
|
|
||||||
|
" On windows a swapfile in Xtopdir prevents it from being cleaned up.
|
||||||
|
set noswapfile
|
||||||
|
|
||||||
|
" On windows a stale "Xtopdir" directory may exist, remove it so that
|
||||||
|
" we start from a clean state.
|
||||||
|
call delete("Xtopdir", "rf")
|
||||||
|
new
|
||||||
|
call mkdir('Xtopdir')
|
||||||
|
cd Xtopdir
|
||||||
|
call mkdir('Xdir1')
|
||||||
|
call mkdir('Xdir2')
|
||||||
|
call mkdir('Xdir3')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let g:cwd=getcwd()
|
||||||
|
function TearDown()
|
||||||
|
q
|
||||||
|
exec "cd " . g:cwd
|
||||||
|
call delete("Xtopdir", "rf")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function Test_GetCwd()
|
||||||
|
new a
|
||||||
|
new b
|
||||||
|
new c
|
||||||
|
3wincmd w
|
||||||
|
lcd Xdir1
|
||||||
|
call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
|
||||||
|
wincmd W
|
||||||
|
call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
|
||||||
|
wincmd W
|
||||||
|
lcd Xdir3
|
||||||
|
call assert_equal("c Xdir3 1", GetCwdInfo(0, 0))
|
||||||
|
call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0))
|
||||||
|
call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0))
|
||||||
|
call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0))
|
||||||
|
wincmd W
|
||||||
|
call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr()))
|
||||||
|
call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr()))
|
||||||
|
call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr()))
|
||||||
|
|
||||||
|
tabnew x
|
||||||
|
new y
|
||||||
|
new z
|
||||||
|
3wincmd w
|
||||||
|
call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
|
||||||
|
wincmd W
|
||||||
|
lcd Xdir2
|
||||||
|
call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
|
||||||
|
wincmd W
|
||||||
|
lcd Xdir3
|
||||||
|
call assert_equal("z Xdir3 1", GetCwdInfo(0, 0))
|
||||||
|
call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0))
|
||||||
|
call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0))
|
||||||
|
call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0))
|
||||||
|
let tp_nr = tabpagenr()
|
||||||
|
tabrewind
|
||||||
|
call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr))
|
||||||
|
call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr))
|
||||||
|
call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr))
|
||||||
|
endfunc
|
@@ -1,5 +1,5 @@
|
|||||||
" Tests for large files
|
" Tests for large files
|
||||||
" This is only executed manually: "make test_largefile".
|
" This is only executed manually: "TEST_FILE=test_largefile.res make oldtest".
|
||||||
" This is not run as part of "make test".
|
" This is not run as part of "make test".
|
||||||
|
|
||||||
func Test_largefile()
|
func Test_largefile()
|
||||||
|
52
src/nvim/testdir/test_maparg.vim
Normal file
52
src/nvim/testdir/test_maparg.vim
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
" Tests for maparg().
|
||||||
|
" Also test utf8 map with a 0x80 byte.
|
||||||
|
if !has("multi_byte")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function s:SID()
|
||||||
|
return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function Test_maparg()
|
||||||
|
new
|
||||||
|
set cpo-=<
|
||||||
|
set encoding=utf8
|
||||||
|
" Test maparg() with a string result
|
||||||
|
map foo<C-V> is<F4>foo
|
||||||
|
vnoremap <script> <buffer> <expr> <silent> bar isbar
|
||||||
|
let sid = s:SID()
|
||||||
|
call assert_equal("is<F4>foo", maparg('foo<C-V>'))
|
||||||
|
call assert_equal({'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>',
|
||||||
|
\ 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': sid, 'rhs': 'is<F4>foo',
|
||||||
|
\ 'buffer': 0}, maparg('foo<C-V>', '', 0, 1))
|
||||||
|
call assert_equal({'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v',
|
||||||
|
\ 'nowait': 0, 'expr': 1, 'sid': sid, 'rhs': 'isbar', 'buffer': 1},
|
||||||
|
\ maparg('bar', '', 0, 1))
|
||||||
|
map <buffer> <nowait> foo bar
|
||||||
|
call assert_equal({'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ',
|
||||||
|
\ 'nowait': 1, 'expr': 0, 'sid': sid, 'rhs': 'bar', 'buffer': 1},
|
||||||
|
\ maparg('foo', '', 0, 1))
|
||||||
|
|
||||||
|
map abc x<char-114>x
|
||||||
|
call assert_equal(maparg('abc'), "xrx")
|
||||||
|
map abc y<S-char-114>y
|
||||||
|
call assert_equal(maparg('abc'), "yRy")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function Test_range_map()
|
||||||
|
new
|
||||||
|
" Outside of the range, minimum
|
||||||
|
inoremap <Char-0x1040> a
|
||||||
|
execute "normal a\u1040\<Esc>"
|
||||||
|
" Inside of the range, minimum
|
||||||
|
inoremap <Char-0x103f> b
|
||||||
|
execute "normal a\u103f\<Esc>"
|
||||||
|
" Inside of the range, maximum
|
||||||
|
inoremap <Char-0xf03f> c
|
||||||
|
execute "normal a\uf03f\<Esc>"
|
||||||
|
" Outside of the range, maximum
|
||||||
|
inoremap <Char-0xf040> d
|
||||||
|
execute "normal a\uf040\<Esc>"
|
||||||
|
call assert_equal("abcd", getline(1))
|
||||||
|
endfunction
|
10
src/nvim/testdir/test_plus_arg_edit.vim
Normal file
10
src/nvim/testdir/test_plus_arg_edit.vim
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
" Tests for complicated + argument to :edit command
|
||||||
|
function Test_edit()
|
||||||
|
call writefile(["foo|bar"], "Xfile1")
|
||||||
|
call writefile(["foo/bar"], "Xfile2")
|
||||||
|
edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
|
||||||
|
call assert_equal(["fooPIPEbar"], readfile("Xfile1"))
|
||||||
|
call assert_equal(["fooSLASHbar"], readfile("Xfile2"))
|
||||||
|
call delete('Xfile1')
|
||||||
|
call delete('Xfile2')
|
||||||
|
endfunction
|
58
src/nvim/testdir/test_regex_char_classes.vim
Normal file
58
src/nvim/testdir/test_regex_char_classes.vim
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
" Tests for regexp with backslash and other special characters inside []
|
||||||
|
" Also test backslash for hex/octal numbered character.
|
||||||
|
|
||||||
|
function RunSTest(value, calls, expected)
|
||||||
|
new
|
||||||
|
call feedkeys("i" . a:value, "mx")
|
||||||
|
exec a:calls
|
||||||
|
call assert_equal(a:expected, getline(1), printf("wrong result for %s", a:calls))
|
||||||
|
quit!
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function RunXTest(value, search_exp, expected)
|
||||||
|
new
|
||||||
|
call feedkeys("i" . a:value, "mx")
|
||||||
|
call feedkeys("gg" . a:search_exp . "\nx", "mx")
|
||||||
|
call assert_equal(a:expected, getline(1), printf("wrong result for %s", a:search_exp))
|
||||||
|
quit!
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function Test_x_search()
|
||||||
|
let res = "test text test text"
|
||||||
|
call RunXTest("test \\text test text", "/[\\x]", res)
|
||||||
|
call RunXTest("test \ttext test text", "/[\\t\\]]", res)
|
||||||
|
call RunXTest("test text ]test text", "/[]y]", res)
|
||||||
|
call RunXTest("test ]text test text", "/[\\]]", res)
|
||||||
|
call RunXTest("test text te^st text", "/[y^]", res)
|
||||||
|
call RunXTest("test te$xt test text", "/[$y]", res)
|
||||||
|
call RunXTest("test taext test text", "/[\\x61]", res)
|
||||||
|
call RunXTest("test tbext test text","/[\\x60-\\x64]", res)
|
||||||
|
call RunXTest("test 5text test text","/[\\x785]", res)
|
||||||
|
call RunXTest("testc text test text","/[\\o143]", res)
|
||||||
|
call RunXTest("tesdt text test text","/[\\o140-\\o144]", res)
|
||||||
|
call RunXTest("test7 text test text", "/[\\o417]", res)
|
||||||
|
call RunXTest("test text tBest text", "/\\%x42", res)
|
||||||
|
call RunXTest("test text teCst text", "/\\%o103", res)
|
||||||
|
call RunXTest("test text \<C-V>x00test text", "/[\\x00]", res)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function Test_s_search()
|
||||||
|
let res = "test text test text"
|
||||||
|
call RunSTest("test te\<C-V>x00xt t\<C-V>x04est t\<C-V>x10ext", "s/[\\x00-\\x10]//g", res)
|
||||||
|
call RunSTest("test \\xyztext test text", "s/[\\x-z]\\+//", res)
|
||||||
|
call RunSTest("test text tev\\uyst text", "s/[\\u-z]\\{2,}//", res)
|
||||||
|
call RunSTest("xx aaaaa xx a", "s/\\(a\\)\\+//", "xx xx a")
|
||||||
|
call RunSTest("xx aaaaa xx a", "s/\\(a*\\)\\+//", "xx aaaaa xx a")
|
||||||
|
call RunSTest("xx aaaaa xx a", "s/\\(a*\\)*//", "xx aaaaa xx a")
|
||||||
|
call RunSTest("xx aaaaa xx", "s/\\(a\\)\\{2,3}/A/", "xx Aaa xx")
|
||||||
|
call RunSTest("xx aaaaa xx", "s/\\(a\\)\\{-2,3}/A/", "xx Aaaa xx")
|
||||||
|
call RunSTest("xx aaa12aa xx", "s/\\(a\\)*\\(12\\)\\@>/A/", "xx Aaa xx")
|
||||||
|
call RunSTest("xx foobar xbar xx", "s/\\(foo\\)\\@<!bar/A/", "xx foobar xA xx")
|
||||||
|
call RunSTest("xx an file xx", "s/\\(an\\_s\\+\\)\\@<=file/A/", "xx an A xx")
|
||||||
|
call RunSTest("x= 9;", "s/^\\(\\h\\w*\\%(->\\|\\.\\)\\=\\)\\+=/XX/", "XX 9;")
|
||||||
|
call RunSTest("hh= 77;", "s/^\\(\\h\\w*\\%(->\\|\\.\\)\\=\\)\\+=/YY/", "YY 77;")
|
||||||
|
call RunSTest(" aaa ", "s/aaa/xyz/", " xyz ")
|
||||||
|
call RunSTest(" xyz", "s/~/bcd/", " bcd")
|
||||||
|
call RunSTest(" bcdbcdbcd", "s/~\\+/BB/", " BB")
|
||||||
|
endfunction
|
Reference in New Issue
Block a user