changeset 30415:56e38195570b v9.0.0543

patch 9.0.0543: insufficient testing for assert and test functions Commit: https://github.com/vim/vim/commit/e24b5e0b0f5ab015215ef2761baa98ccb1ba8606 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Thu Sep 22 13:44:00 2022 +0100 patch 9.0.0543: insufficient testing for assert and test functions Problem: Insufficient testing for assert and test functions. Solution: Add a few more tests. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/11190)
author Bram Moolenaar <Bram@vim.org>
date Thu, 22 Sep 2022 14:45:02 +0200
parents 33e6eb790432
children 41b0b57c4ebd
files src/testdir/test_assert.vim src/testdir/test_options.vim src/testdir/test_vimscript.vim src/version.c
diffstat 4 files changed, 63 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -269,6 +269,20 @@ func Test_assert_fail_fails()
   call assert_match("E856: \"assert_fails()\" second argument", exp)
 
   try
+    call assert_equal(1, assert_fails('xxx', test_null_list()))
+  catch
+    let exp = v:exception
+  endtry
+  call assert_match("E856: \"assert_fails()\" second argument", exp)
+
+  try
+    call assert_equal(1, assert_fails('xxx', []))
+  catch
+    let exp = v:exception
+  endtry
+  call assert_match("E856: \"assert_fails()\" second argument", exp)
+
+  try
     call assert_equal(1, assert_fails('xxx', #{one: 1}))
   catch
     let exp = v:exception
@@ -307,6 +321,15 @@ func Test_assert_fail_fails()
   call assert_equal(1, assert_fails('c0', ['', '\(.\)\1']))
   call assert_match("Expected '\\\\\\\\(.\\\\\\\\)\\\\\\\\1' but got 'E939: Positive count required: c0': c0", v:errors[0])
   call remove(v:errors, 0)
+
+  " Test for matching the line number and the script name in an error message
+  call writefile(['', 'call Xnonexisting()'], 'Xassertfails.vim', 'D')
+  call assert_fails('source Xassertfails.vim', 'E117:', '', 10)
+  call assert_match("Expected 10 but got 2", v:errors[0])
+  call remove(v:errors, 0)
+  call assert_fails('source Xassertfails.vim', 'E117:', '', 2, 'Xabc')
+  call assert_match("Expected 'Xabc' but got .*Xassertfails.vim", v:errors[0])
+  call remove(v:errors, 0)
 endfunc
 
 func Test_assert_fails_in_try_block()
@@ -331,6 +354,12 @@ func Test_assert_beeps()
   bwipe
 endfunc
 
+func Test_assert_nobeep()
+  call assert_equal(1, assert_nobeep('normal! cr'))
+  call assert_match("command did beep: normal! cr", v:errors[0])
+  call remove(v:errors, 0)
+endfunc
+
 func Test_assert_inrange()
   call assert_equal(0, assert_inrange(7, 7, 7))
   call assert_equal(0, assert_inrange(5, 7, 5))
@@ -365,6 +394,16 @@ func Test_assert_inrange()
   call assert_equal(1, assert_inrange(5, 7, 8.0))
   call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
   call remove(v:errors, 0)
+
+  " Use a custom message
+  call assert_equal(1, assert_inrange(5, 7, 8.0, "Higher"))
+  call assert_match("Higher", v:errors[0])
+  call remove(v:errors, 0)
+
+  " Invalid arguments
+  call assert_fails("call assert_inrange([], 2, 3)", 'E1219:')
+  call assert_fails("call assert_inrange(1, [], 3)", 'E1219:')
+  call assert_fails("call assert_inrange(1, 2, [])", 'E1219:')
 endfunc
 
 func Test_assert_with_msg()
@@ -407,6 +446,19 @@ func Test_user_is_happy()
   sleep 300m
 endfunc
 
+" Test for the test_alloc_fail() function
+func Test_test_alloc_fail()
+  call assert_fails('call test_alloc_fail([], 1, 1)', 'E474:')
+  call assert_fails('call test_alloc_fail(10, [], 1)', 'E474:')
+  call assert_fails('call test_alloc_fail(10, 1, [])', 'E474:')
+  call assert_fails('call test_alloc_fail(999999, 1, 1)', 'E474:')
+endfunc
+
+" Test for the test_option_not_set() function
+func Test_test_option_not_set()
+  call assert_fails('call test_option_not_set("Xinvalidopt")', 'E475:')
+endfunc
+
 " Must be last.
 func Test_zz_quit_detected()
   " Verify that if a test function ends Vim the test script detects this.
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -815,6 +815,7 @@ func Test_shortmess_F2()
   call assert_match('file2', execute('bn', ''))
   bwipe
   bwipe
+  call assert_fails('call test_getvalue("abc")', 'E475:')
 endfunc
 
 func Test_local_scrolloff()
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -7216,6 +7216,14 @@ func Test_refcount()
     call d.Func()
     unlet d
     delfunc DictFunc
+
+    call assert_equal(-1, test_refcount(test_null_job()))
+    call assert_equal(-1, test_refcount(test_null_channel()))
+    call assert_equal(-1, test_refcount(test_null_function()))
+    call assert_equal(-1, test_refcount(test_null_partial()))
+    call assert_equal(-1, test_refcount(test_null_blob()))
+    call assert_equal(-1, test_refcount(test_null_list()))
+    call assert_equal(-1, test_refcount(test_null_dict()))
 endfunc
 
 " Test for missing :endif, :endfor, :endwhile and :endtry           {{{1
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    543,
+/**/
     542,
 /**/
     541,