Merge #9679 from janlazo/vim-8.1.0891

This commit is contained in:
Justin M. Keyes 2019-03-05 22:47:19 +01:00 committed by GitHub
commit 5d2e4a5021
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 141 additions and 0 deletions

View File

@ -119,6 +119,14 @@ func Test_findfile()
let &shellslash = save_shellslash
endfunc
func Test_findfile_error()
call assert_fails('call findfile([])', 'E730:')
call assert_fails('call findfile("x", [])', 'E730:')
call assert_fails('call findfile("x", "", [])', 'E745:')
call assert_fails('call findfile("x", "**x")', 'E343:')
call assert_fails('call findfile("x", repeat("x", 5000))', 'E854:')
endfunc
" Test finddir({name} [, {path} [, {count}]])
func Test_finddir()
let save_path = &path
@ -167,3 +175,11 @@ func Test_finddir()
let &path = save_path
let &shellslash = save_shellslash
endfunc
func Test_finddir_error()
call assert_fails('call finddir([])', 'E730:')
call assert_fails('call finddir("x", [])', 'E730:')
call assert_fails('call finddir("x", "", [])', 'E745:')
call assert_fails('call finddir("x", "**x")', 'E343:')
call assert_fails('call finddir("x", repeat("x", 5000))', 'E854:')
endfunc

View File

@ -136,3 +136,44 @@ func Test_marks_cmd_multibyte()
bwipe!
endfunc
func Test_delmarks()
new
norm mx
norm `x
delmarks x
call assert_fails('norm `x', 'E20:')
" Deleting an already deleted mark should not fail.
delmarks x
" Test deleting a range of marks.
norm ma
norm mb
norm mc
norm mz
delmarks b-z
norm `a
call assert_fails('norm `b', 'E20:')
call assert_fails('norm `c', 'E20:')
call assert_fails('norm `z', 'E20:')
call assert_fails('delmarks z-b', 'E475:')
call assert_fails('delmarks', 'E471:')
call assert_fails('delmarks /', 'E475:')
" Test delmarks!
norm mx
norm `x
delmarks!
call assert_fails('norm `x', 'E20:')
call assert_fails('delmarks! x', 'E474:')
bwipe!
endfunc
func Test_mark_error()
call assert_fails('mark', 'E471:')
call assert_fails('mark xx', 'E488:')
call assert_fails('mark _', 'E191:')
endfunc

View File

@ -322,6 +322,90 @@ func Test_sub_cmd_8()
set titlestring&
endfunc
" Test %s/\n// which is implemented as a special case to use a
" more efficient join rather than doing a regular substitution.
func Test_substitute_join()
new
call setline(1, ["foo\tbar", "bar\<C-H>foo"])
let a = execute('%s/\n//')
call assert_equal("", a)
call assert_equal(["foo\tbarbar\<C-H>foo"], getline(1, '$'))
call assert_equal('\n', histget("search", -1))
call setline(1, ["foo\tbar", "bar\<C-H>foo"])
let a = execute('%s/\n//g')
call assert_equal("", a)
call assert_equal(["foo\tbarbar\<C-H>foo"], getline(1, '$'))
call assert_equal('\n', histget("search", -1))
call setline(1, ["foo\tbar", "bar\<C-H>foo"])
let a = execute('%s/\n//p')
call assert_equal("\nfoo barbar^Hfoo", a)
call assert_equal(["foo\tbarbar\<C-H>foo"], getline(1, '$'))
call assert_equal('\n', histget("search", -1))
call setline(1, ["foo\tbar", "bar\<C-H>foo"])
let a = execute('%s/\n//l')
call assert_equal("\nfoo^Ibarbar^Hfoo$", a)
call assert_equal(["foo\tbarbar\<C-H>foo"], getline(1, '$'))
call assert_equal('\n', histget("search", -1))
call setline(1, ["foo\tbar", "bar\<C-H>foo"])
let a = execute('%s/\n//#')
call assert_equal("\n 1 foo barbar^Hfoo", a)
call assert_equal(["foo\tbarbar\<C-H>foo"], getline(1, '$'))
call assert_equal('\n', histget("search", -1))
bwipe!
endfunc
func Test_substitute_count()
new
call setline(1, ['foo foo', 'foo foo', 'foo foo', 'foo foo', 'foo foo'])
2
s/foo/bar/3
call assert_equal(['foo foo', 'bar foo', 'bar foo', 'bar foo', 'foo foo'],
\ getline(1, '$'))
call assert_fails('s/foo/bar/0', 'E939:')
bwipe!
endfunc
" Test substitute 'n' flag (report number of matches, do not substitute).
func Test_substitute_flag_n()
new
let lines = ['foo foo', 'foo foo', 'foo foo', 'foo foo', 'foo foo']
call setline(1, lines)
call assert_equal("\n3 matches on 3 lines", execute('2,4s/foo/bar/n'))
call assert_equal("\n6 matches on 3 lines", execute('2,4s/foo/bar/gn'))
" c flag (confirm) should be ignored when using n flag.
call assert_equal("\n3 matches on 3 lines", execute('2,4s/foo/bar/nc'))
" No substitution should have been done.
call assert_equal(lines, getline(1, '$'))
bwipe!
endfunc
func Test_substitute_errors()
new
call setline(1, 'foobar')
call assert_fails('s/FOO/bar/', 'E486:')
call assert_fails('s/foo/bar/@', 'E488:')
call assert_fails('s/\(/bar/', 'E476:')
setl nomodifiable
call assert_fails('s/foo/bar/', 'E21:')
bwipe!
endfunc
" Test for *sub-replace-special* and *sub-replace-expression* on substitute().
func Test_sub_replace_1()
" Run the tests with 'magic' on