From 531be47ac5522807b265c6287021a01c9b895ac9 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 23 Sep 2020 22:38:05 +0200 Subject: patch 8.2.1736: failure to compile a pattern not tested much Problem: Failure to compile a pattern not tested much. Solution: Add tests where a pattern fails to compile. (Yegappan Lakshmanan, closes #7004) --- src/testdir/gen_opt_test.vim | 2 +- src/testdir/test_arglist.vim | 1 + src/testdir/test_autocmd.vim | 1 + src/testdir/test_buffer.vim | 1 + src/testdir/test_checkpath.vim | 15 +++++++++++++++ src/testdir/test_cmdline.vim | 2 ++ src/testdir/test_debugger.vim | 1 + src/testdir/test_functions.vim | 1 + src/testdir/test_history.vim | 1 + src/testdir/test_listdict.vim | 1 + src/testdir/test_options.vim | 1 + src/testdir/test_search_stat.vim | 8 ++++++++ src/testdir/test_sort.vim | 1 + src/testdir/test_substitute.vim | 1 + src/testdir/test_syntax.vim | 2 ++ src/testdir/test_tagjump.vim | 4 ++++ src/testdir/test_user_func.vim | 3 +++ src/version.c | 2 ++ 18 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim index faff33a86..271abedce 100644 --- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -73,7 +73,7 @@ let test_values = { \ 'buftype': [['', 'help', 'nofile'], ['xxx', 'help,nofile']], \ 'casemap': [['', 'internal'], ['xxx']], \ 'cedit': [['', '\'], ['xxx', 'f']], - \ 'clipboard': [['', 'unnamed', 'autoselect,unnamed', 'html', 'exclude:vimdisplay'], ['xxx', '\ze*']], + \ 'clipboard': [['', 'unnamed', 'autoselect,unnamed', 'html', 'exclude:vimdisplay'], ['xxx', '\ze*', 'exclude:\\%(']], \ 'colorcolumn': [['', '8', '+2'], ['xxx']], \ 'comments': [['', 'b:#'], ['xxx']], \ 'commentstring': [['', '/*%s*/'], ['xxx']], diff --git a/src/testdir/test_arglist.vim b/src/testdir/test_arglist.vim index 9b23a512e..615d8167b 100644 --- a/src/testdir/test_arglist.vim +++ b/src/testdir/test_arglist.vim @@ -425,6 +425,7 @@ func Test_argdelete() call assert_equal(['b'], argv()) call assert_fails('argdelete', 'E610:') call assert_fails('1,100argdelete', 'E16:') + call assert_fails('argdel /\)/', 'E55:') call Reset_arglist() args a b c d diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim index b7067a773..b7cc0c0bf 100644 --- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -2520,6 +2520,7 @@ func Test_autocmd_invalid_args() call assert_fails('doautocmd * BufEnter', 'E217:') call assert_fails('augroup! x1a2b3', 'E367:') call assert_fails('autocmd BufNew pwd', 'E680:') + call assert_fails('autocmd BufNew \) set ff=unix', 'E55:') endfunc " Test for deep nesting of autocmds diff --git a/src/testdir/test_buffer.vim b/src/testdir/test_buffer.vim index e54b6338c..8ef41e20f 100644 --- a/src/testdir/test_buffer.vim +++ b/src/testdir/test_buffer.vim @@ -138,6 +138,7 @@ func Test_bdelete_cmd() %bwipe! call assert_fails('bdelete 5', 'E516:') call assert_fails('1,1bdelete 1 2', 'E488:') + call assert_fails('bdelete \)', 'E55:') " Deleting a unlisted and unloaded buffer edit Xfile1 diff --git a/src/testdir/test_checkpath.vim b/src/testdir/test_checkpath.vim index 28e910573..f6a3bbce0 100644 --- a/src/testdir/test_checkpath.vim +++ b/src/testdir/test_checkpath.vim @@ -103,4 +103,19 @@ func Test_checkpath3() set includeexpr& endfunc +" Test for invalid regex in 'include' and 'define' options +func Test_checkpath_errors() + let save_include = &include + set include=\\%( + call assert_fails('checkpath', 'E53:') + let &include = save_include + + let save_define = &define + set define=\\%( + call assert_fails('dsearch abc', 'E53:') + let &define = save_define + + call assert_fails('psearch \%(', 'E53:') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index a547ac4e6..026625e02 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -185,6 +185,8 @@ func Test_map_completion() unmap set cpo-=k + call assert_fails('call feedkeys(":map \\\\%(\\\"\", "xt")', 'E53:') + unmap x set cpo&vim endfunc diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim index 8c5167542..b6231cf4a 100644 --- a/src/testdir/test_debugger.vim +++ b/src/testdir/test_debugger.vim @@ -339,6 +339,7 @@ func Test_Debugger() call delete('Xtest.vim') %bw! call assert_fails('breakadd here', 'E32:') + call assert_fails('breakadd file Xtest.vim /\)/', 'E55:') endfunc func Test_Backtrace_Through_Source() diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 2492c9379..5e4eacd04 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -973,6 +973,7 @@ func Test_match_func() call assert_equal(4, match('testing', 'ing', -1)) call assert_fails("let x=match('testing', 'ing', 0, [])", 'E745:') call assert_equal(-1, match(test_null_list(), 2)) + call assert_equal(-1, match('abc', '\\%(')) endfunc func Test_matchend() diff --git a/src/testdir/test_history.vim b/src/testdir/test_history.vim index feb521e23..1bea78d5a 100644 --- a/src/testdir/test_history.vim +++ b/src/testdir/test_history.vim @@ -95,6 +95,7 @@ function Test_History() call assert_fails('call histnr([])', 'E730:') call assert_fails('history xyz', 'E488:') call assert_fails('history ,abc', 'E488:') + call assert_fails('call histdel(":", "\\%(")', 'E53:') endfunction function Test_Search_history_window() diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim index 66b84060a..63fa04ef9 100644 --- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -753,6 +753,7 @@ func Test_str_split() call assert_equal(['', 'a', '', 'b', '', 'c', ''], split('abc', '\zs', 1)) call assert_fails("call split('abc', [])", 'E730:') call assert_fails("call split('abc', 'b', [])", 'E745:') + call assert_equal(['abc'], split('abc', '\\%(')) endfunc " compare recursively linked list and dict diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim index ec40ccc5f..22e0809ad 100644 --- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -411,6 +411,7 @@ func Test_set_errors() call assert_fails('set pyxversion=6', 'E474:') endif call assert_fails("let &tabstop='ab'", 'E521:') + call assert_fails('set spellcapcheck=%\\(', 'E54:') endfunc func CheckWasSet(name) diff --git a/src/testdir/test_search_stat.vim b/src/testdir/test_search_stat.vim index 73cea033e..2afccef5d 100644 --- a/src/testdir/test_search_stat.vim +++ b/src/testdir/test_search_stat.vim @@ -260,6 +260,14 @@ endfunc func Test_searchcount_fails() call assert_fails('echo searchcount("boo!")', 'E715:') + call assert_fails('echo searchcount({"timeout" : []})', 'E745:') + call assert_fails('echo searchcount({"maxcount" : []})', 'E745:') + call assert_fails('echo searchcount({"pattern" : []})', 'E730:') + call assert_fails('echo searchcount({"pos" : 1})', 'E475:') + call assert_fails('echo searchcount({"pos" : [1]})', 'E475:') + call assert_fails('echo searchcount({"pos" : [[], 2, 3]})', 'E745:') + call assert_fails('echo searchcount({"pos" : [1, [], 3]})', 'E745:') + call assert_fails('echo searchcount({"pos" : [1, 2, []]})', 'E745:') endfunc func Test_searchcount_in_statusline() diff --git a/src/testdir/test_sort.vim b/src/testdir/test_sort.vim index c7504b7a7..d76132ee5 100644 --- a/src/testdir/test_sort.vim +++ b/src/testdir/test_sort.vim @@ -1256,6 +1256,7 @@ func Test_sort_cmd() call assert_fails('sort no', 'E474:') call assert_fails('sort c', 'E475:') call assert_fails('sort #pat%', 'E654:') + call assert_fails('sort /\%(/', 'E53:') enew! endfunc diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim index a137aa527..f38eb55b8 100644 --- a/src/testdir/test_substitute.vim +++ b/src/testdir/test_substitute.vim @@ -246,6 +246,7 @@ func Test_substitute_errors() call assert_fails("let s=substitute('abcda', [], 'A', 'g')", 'E730:') call assert_fails("let s=substitute('abcda', 'a', [], 'g')", 'E730:') call assert_fails("let s=substitute('abcda', 'a', 'A', [])", 'E730:') + call assert_fails("let s=substitute('abc', '\\%(', 'A', 'g')", 'E53:') bwipe! endfunc diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim index 8a021851f..dc0535586 100644 --- a/src/testdir/test_syntax.vim +++ b/src/testdir/test_syntax.vim @@ -373,6 +373,7 @@ func Test_syntax_invalid_arg() call AssertFails('syntax cluster contains=Abc', 'E400:') call AssertFails("syntax match Character /'.'", 'E401:') call AssertFails("syntax match Character /'.'/a", 'E402:') + call assert_fails('syntax sync linecont /\%(/', 'E53:') call assert_fails('syntax sync linecont /pat', 'E404:') call assert_fails('syntax sync linecont', 'E404:') call assert_fails('syntax sync linecont /pat1/ linecont /pat2/', 'E403:') @@ -382,6 +383,7 @@ func Test_syntax_invalid_arg() call AssertFails('syntax match ccFoo "Foo" nextgroup=ALLBUT,F', 'E407:') call AssertFails('syntax region Block start="{" contains=F,ALLBUT', 'E408:') call AssertFails("syntax match Characters contains=a.*x /'.'/", 'E409:') + call assert_fails('syntax match Search /abc/ contains=ALLBUT,/\%(/', 'E53:') endfunc func Test_syn_sync() diff --git a/src/testdir/test_tagjump.vim b/src/testdir/test_tagjump.vim index ab4841f89..a872b1ce9 100644 --- a/src/testdir/test_tagjump.vim +++ b/src/testdir/test_tagjump.vim @@ -184,6 +184,10 @@ function Test_keyword_jump() call search("start") exe "normal! 5\\" call assert_equal(" start OK if found this line", getline('.')) + + " invalid tag search pattern + call assert_fails('tag /\%(/', 'E426:') + enew! | only call delete('Xtestfile') call delete('Xinclude') diff --git a/src/testdir/test_user_func.vim b/src/testdir/test_user_func.vim index ed07d99b7..2edaec87e 100644 --- a/src/testdir/test_user_func.vim +++ b/src/testdir/test_user_func.vim @@ -410,6 +410,9 @@ func Test_func_def_error() call writefile(['func foo#Bar()', 'return 1', 'endfunc'], 'Xscript') call assert_fails('source Xscript', 'E746:') call delete('Xscript') + + " Try to list functions using an invalid search pattern + call assert_fails('function /\%(/', 'E53:') endfunc " Test for deleting a function diff --git a/src/version.c b/src/version.c index d85ac1b2d..a2383c9e7 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1736, /**/ 1735, /**/ -- cgit v1.2.1