From 67322bf74a106b6476b093e75da87d61e2181b76 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 6 Dec 2020 15:03:19 +0100 Subject: [PATCH] patch 8.2.2100: insufficient testing for function range and dict MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Insufficient testing for function range and dict. Solution: Add a few tests. (Dominique Pellé, closes #7428) --- src/testdir/test_functions.vim | 1 + src/testdir/test_lambda.vim | 5 +++++ src/testdir/test_signals.vim | 3 +-- src/testdir/test_user_func.vim | 32 ++++++++++++++++++++++++++++++++ src/version.c | 2 ++ 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index d6e408a8433b7..dd4429e709866 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -2099,6 +2099,7 @@ func Test_call() let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")} eval mydict.len->call([], mydict)->assert_equal(4) call assert_fails("call call('Mylen', [], 0)", 'E715:') + call assert_fails('call foo', 'E107:') endfunc func Test_char2nr() diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim index aa734624addab..60d58c542b845 100644 --- a/src/testdir/test_lambda.vim +++ b/src/testdir/test_lambda.vim @@ -247,6 +247,11 @@ func Test_closure_counter() call assert_equal(2, l:F()) call assert_equal(3, l:F()) call assert_equal(4, l:F()) + + call assert_match("^\n function \\d\\+_bar() closure" + \ .. "\n1 let x += 1" + \ .. "\n2 return x" + \ .. "\n endfunction$", execute('func s:bar')) endfunc func Test_closure_unlet() diff --git a/src/testdir/test_signals.vim b/src/testdir/test_signals.vim index 78b2cecb85802..1723f33108d5b 100644 --- a/src/testdir/test_signals.vim +++ b/src/testdir/test_signals.vim @@ -153,8 +153,7 @@ func Test_deadly_signal_TERM() call assert_equal(['foo'], getline(1, '$')) let result = readfile('XautoOut') - call assert_match('VimLeavePre triggered', result[0]) - call assert_match('VimLeave triggered', result[1]) + call assert_equal(["VimLeavePre triggered", "VimLeave triggered"], result) %bwipe! call delete('.Xsig_TERM.swp') diff --git a/src/testdir/test_user_func.vim b/src/testdir/test_user_func.vim index 2edaec87ece02..2db558931daf0 100644 --- a/src/testdir/test_user_func.vim +++ b/src/testdir/test_user_func.vim @@ -445,4 +445,36 @@ func Test_func_arg_error() delfunc Xfunc endfunc +func Test_func_dict() + let mydict = {'a': 'b'} + function mydict.somefunc() dict + return len(self) + endfunc + + call assert_equal("{'a': 'b', 'somefunc': function('2')}", string(mydict)) + call assert_equal(2, mydict.somefunc()) + call assert_match("^\n function \\d\\\+() dict" + \ .. "\n1 return len(self)" + \ .. "\n endfunction$", execute('func mydict.somefunc')) +endfunc + +func Test_func_range() + new + call setline(1, range(1, 8)) + func FuncRange() range + echo a:firstline + echo a:lastline + endfunc + 3 + call assert_equal("\n3\n3", execute('call FuncRange()')) + call assert_equal("\n4\n6", execute('4,6 call FuncRange()')) + call assert_equal("\n function FuncRange() range" + \ .. "\n1 echo a:firstline" + \ .. "\n2 echo a:lastline" + \ .. "\n endfunction", + \ execute('function FuncRange')) + + bwipe! +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 9903918f1e72f..2754d2f72279a 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 */ +/**/ + 2100, /**/ 2099, /**/