aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-03-05 22:47:19 +0100
committerGitHub <noreply@github.com>2019-03-05 22:47:19 +0100
commit5d2e4a5021fb83c3356c6482fef7baf2729dd3a5 (patch)
tree2dfd45362c37f93de315cf046c7af72c29018bc6
parente386e51d9e284ece5fe78a6dbcc0c8c4f166e48a (diff)
parent04059312b075573b3e008abada1544159a127bfa (diff)
downloadrneovim-5d2e4a5021fb83c3356c6482fef7baf2729dd3a5.tar.gz
rneovim-5d2e4a5021fb83c3356c6482fef7baf2729dd3a5.tar.bz2
rneovim-5d2e4a5021fb83c3356c6482fef7baf2729dd3a5.zip
Merge #9679 from janlazo/vim-8.1.0891
-rw-r--r--src/nvim/testdir/test_findfile.vim16
-rw-r--r--src/nvim/testdir/test_marks.vim41
-rw-r--r--src/nvim/testdir/test_substitute.vim84
3 files changed, 141 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_findfile.vim b/src/nvim/testdir/test_findfile.vim
index 78e51ed836..0bae161a8b 100644
--- a/src/nvim/testdir/test_findfile.vim
+++ b/src/nvim/testdir/test_findfile.vim
@@ -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
diff --git a/src/nvim/testdir/test_marks.vim b/src/nvim/testdir/test_marks.vim
index 8858cd22b8..7fd115fd68 100644
--- a/src/nvim/testdir/test_marks.vim
+++ b/src/nvim/testdir/test_marks.vim
@@ -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
diff --git a/src/nvim/testdir/test_substitute.vim b/src/nvim/testdir/test_substitute.vim
index dbd26be089..d02454fbf0 100644
--- a/src/nvim/testdir/test_substitute.vim
+++ b/src/nvim/testdir/test_substitute.vim
@@ -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