From 0a3a2132d43be3a376214f75157d4d2b1340311e Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 4 May 2023 21:00:46 +0800 Subject: vim-patch:8.2.1953: Vim9: extra "unknown" error after other error Problem: Vim9: extra "unknown" error after other error. Solution: Restore did_emsg count after EXEC instruction. (closes vim/vim#7254) Improve error message from assert_fails() https://github.com/vim/vim/commit/631e8f93458b102091d54c502f489c03e454d4da Co-authored-by: Bram Moolenaar --- test/old/testdir/test_assert.vim | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'test/old/testdir/test_assert.vim') diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index 62b2e5d7ab..5fd0103d27 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -6,11 +6,11 @@ func Test_assert_false() call assert_equal(0, v:false->assert_false()) call assert_equal(1, assert_false(123)) - call assert_match("Expected False but got 123", v:errors[0]) + call assert_match("Expected 'False' but got 123", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, 123->assert_false()) - call assert_match("Expected False but got 123", v:errors[0]) + call assert_match("Expected 'False' but got 123", v:errors[0]) call remove(v:errors, 0) endfunc @@ -21,11 +21,11 @@ func Test_assert_true() call assert_equal(0, v:true->assert_true()) call assert_equal(1, assert_true(0)) - call assert_match("Expected True but got 0", v:errors[0]) + call assert_match("Expected 'True' but got 0", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, 0->assert_true()) - call assert_match("Expected True but got 0", v:errors[0]) + call assert_match("Expected 'True' but got 0", v:errors[0]) call remove(v:errors, 0) endfunc @@ -228,11 +228,11 @@ func Test_assert_fail_fails() call remove(v:errors, 0) call assert_equal(1, assert_fails('xxx', ['E9876'])) - call assert_match("Expected \\['E9876'\\] but got 'E492:", v:errors[0]) + call assert_match("Expected 'E9876' but got 'E492:", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, assert_fails('xxx', ['E492:', 'E9876'])) - call assert_match("Expected \\['E492:', 'E9876'\\] but got 'E492:", v:errors[0]) + call assert_match("Expected 'E9876' but got 'E492:", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, assert_fails('echo', '', 'echo command')) -- cgit From 17c8e39f8803daa6f0e6106ce1c087240cef4771 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 4 May 2023 21:49:48 +0800 Subject: vim-patch:9.0.0213: using freed memory with error in assert argument Problem: Using freed memory with error in assert argument. Solution: Make a copy of the error. https://github.com/vim/vim/commit/249e1b903a9c0460d618f6dcc59aeb8c03b24b20 Co-authored-by: Bram Moolenaar --- test/old/testdir/test_assert.vim | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'test/old/testdir/test_assert.vim') diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index 5fd0103d27..27f0491634 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -277,6 +277,10 @@ func Test_assert_fail_fails() let exp = v:exception endtry call assert_match("E1174: String required for argument 5", exp) + + 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) endfunc func Test_assert_fails_in_try_block() -- cgit From 5fb6b3431a52932dcc50bcc930f8b2c9b71a1bb0 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 5 May 2023 12:36:47 +0800 Subject: vim-patch:9.0.0404: crash when passing invalid arguments to assert_fails() Problem: Crash when passing invalid arguments to assert_fails(). Solution: Check for NULL string. https://github.com/vim/vim/commit/1540d334a04d874c2aa9d26b82dbbcd4bc5a78de Co-authored-by: Bram Moolenaar --- test/old/testdir/test_assert.vim | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'test/old/testdir/test_assert.vim') diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index 27f0491634..6926d73af1 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -264,6 +264,21 @@ func Test_assert_fail_fails() endtry call assert_match("E1222: String or List required for argument 2", exp) + try + call assert_equal(0, assert_fails('xxx', [#{one: 1}])) + catch + let exp = v:exception + endtry + call assert_match("E731: Using a Dictionary as a String", exp) + + let exp = '' + try + call assert_equal(0, assert_fails('xxx', ['E492', #{one: 1}])) + catch + let exp = v:exception + endtry + call assert_match("E731: Using a Dictionary as a String", exp) + try call assert_equal(1, assert_fails('xxx', 'E492', '', 'burp')) catch @@ -278,8 +293,8 @@ func Test_assert_fail_fails() endtry call assert_match("E1174: String required for argument 5", exp) - 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 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) endfunc -- cgit From 050b24cbccbe6e08f31fd33a854b91f7e8920834 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 5 May 2023 12:40:31 +0800 Subject: vim-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 vim/vim#11190) https://github.com/vim/vim/commit/e24b5e0b0f5ab015215ef2761baa98ccb1ba8606 Cherry-pick E1219 from patch 8.2.3229. Cherry-pick test_assert.vim change from patch 9.0.0491. Cherry-pick the whole Test_refcount() function and skip it. Co-authored-by: Yegappan Lakshmanan --- test/old/testdir/test_assert.vim | 82 ++++++++++++++++++++++++++++++++-------- 1 file changed, 67 insertions(+), 15 deletions(-) (limited to 'test/old/testdir/test_assert.vim') diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index 6926d73af1..9b65e36e16 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -257,6 +257,20 @@ func Test_assert_fail_fails() endtry call assert_match("E856: \"assert_fails()\" second argument", exp) + try + call assert_equal(1, assert_fails('xxx', v:_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 @@ -296,6 +310,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() @@ -320,6 +343,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)) @@ -341,21 +370,29 @@ func Test_assert_inrange() call assert_fails('call assert_inrange(1, 1)', 'E119:') - if has('float') - call assert_equal(0, assert_inrange(7.0, 7, 7)) - call assert_equal(0, assert_inrange(7, 7.0, 7)) - call assert_equal(0, assert_inrange(7, 7, 7.0)) - call assert_equal(0, assert_inrange(5, 7, 5.0)) - call assert_equal(0, assert_inrange(5, 7, 6.0)) - call assert_equal(0, assert_inrange(5, 7, 7.0)) - - call assert_equal(1, assert_inrange(5, 7, 4.0)) - call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0]) - call remove(v:errors, 0) - 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) - endif + call assert_equal(0, assert_inrange(7.0, 7, 7)) + call assert_equal(0, assert_inrange(7, 7.0, 7)) + call assert_equal(0, assert_inrange(7, 7, 7.0)) + call assert_equal(0, assert_inrange(5, 7, 5.0)) + call assert_equal(0, assert_inrange(5, 7, 6.0)) + call assert_equal(0, assert_inrange(5, 7, 7.0)) + + call assert_equal(1, assert_inrange(5, 7, 4.0)) + call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0]) + call remove(v:errors, 0) + 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() @@ -393,6 +430,21 @@ func Test_mouse_position() let &mouse = save_mouse endfunc +" Test for the test_alloc_fail() function +func Test_test_alloc_fail() + throw 'Skipped: Nvim does not support 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() + throw 'Skipped: Nvim does not support 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. -- cgit From 49a2bb91170f49101fa67b0cf4cbfec5885edcf4 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 5 May 2023 12:53:39 +0800 Subject: vim-patch:9.0.0846: using assert_fails() may cause hit-enter prompt Problem: Using assert_fails() may cause hit-enter prompt. Solution: Set no_wait_return. (closes vim/vim#11522) https://github.com/vim/vim/commit/f220643c260d55d21a841a3c4032daadc41bc50b Co-authored-by: Bram Moolenaar --- test/old/testdir/test_assert.vim | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test/old/testdir/test_assert.vim') diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index 9b65e36e16..e20084515e 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -327,6 +327,12 @@ func Test_assert_fails_in_try_block() endtry endfunc +func Test_assert_fails_in_timer() + " should not cause a hit-enter prompt, which isn't actually checked here + call timer_start(0, {-> assert_fails('call', 'E471:')}) + sleep 10m +endfunc + func Test_assert_beeps() new call assert_equal(0, assert_beeps('normal h')) -- cgit From 49c3eb01ab53c4f6bb3f372590878d46ef0c163a Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 5 May 2023 12:54:55 +0800 Subject: vim-patch:9.0.0854: no proper test for what 9.0.0846 fixes Problem: No proper test for what 9.0.0846 fixes. Solution: Run test in a terminal so that the hit-enter prompt can show up. (closes vim/vim#11523) https://github.com/vim/vim/commit/7265851b2b4e5a63c0a02a9057dee237502ee557 --- test/old/testdir/test_assert.vim | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'test/old/testdir/test_assert.vim') diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index e20084515e..087eea3bcf 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -1,5 +1,8 @@ " Test that the methods used for testing work. +source check.vim +source term_util.vim + func Test_assert_false() call assert_equal(0, assert_false(0)) call assert_equal(0, assert_false(v:false)) @@ -327,10 +330,21 @@ func Test_assert_fails_in_try_block() endtry endfunc +" Test that assert_fails() in a timer does not cause a hit-enter prompt. +" Requires using a terminal, in regular tests the hit-enter prompt won't be +" triggered. func Test_assert_fails_in_timer() - " should not cause a hit-enter prompt, which isn't actually checked here - call timer_start(0, {-> assert_fails('call', 'E471:')}) - sleep 10m + CheckRunVimInTerminal + + let buf = RunVimInTerminal('', {'rows': 6}) + let cmd = ":call timer_start(0, {-> assert_fails('call', 'E471:')})" + call term_sendkeys(buf, cmd) + call WaitForAssert({-> assert_equal(cmd, term_getline(buf, 6))}) + call term_sendkeys(buf, "\") + call TermWait(buf, 100) + call assert_match('E471: Argument required', term_getline(buf, 6)) + + call StopVimInTerminal(buf) endfunc func Test_assert_beeps() -- cgit From c11417b3d74f02568e37ea3370a7c24141d4f18a Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 5 May 2023 12:59:43 +0800 Subject: vim-patch:9.0.1507: assert message is confusing with boolean result Problem: Assert message is confusing with boolean result. assert_inrange() replaces message instead of adding it. Solution: Don't put quotes around expected boolean value. Append message for assert_inrange(). (closes vim/vim#12342, closes vim/vim#12341) https://github.com/vim/vim/commit/53f5e51628b56ef9171671cd6e9970374036a084 Move assert_type_T to testing.c and remove ASSERT_INRANGE. --- test/old/testdir/test_assert.vim | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'test/old/testdir/test_assert.vim') diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index 087eea3bcf..57d11d0e3a 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -9,11 +9,11 @@ func Test_assert_false() call assert_equal(0, v:false->assert_false()) call assert_equal(1, assert_false(123)) - call assert_match("Expected 'False' but got 123", v:errors[0]) + call assert_match("Expected False but got 123", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, 123->assert_false()) - call assert_match("Expected 'False' but got 123", v:errors[0]) + call assert_match("Expected False but got 123", v:errors[0]) call remove(v:errors, 0) endfunc @@ -24,11 +24,11 @@ func Test_assert_true() call assert_equal(0, v:true->assert_true()) call assert_equal(1, assert_true(0)) - call assert_match("Expected 'True' but got 0", v:errors[0]) + call assert_match("Expected True but got 0", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, 0->assert_true()) - call assert_match("Expected 'True' but got 0", v:errors[0]) + call assert_match("Expected True but got 0", v:errors[0]) call remove(v:errors, 0) endfunc @@ -405,8 +405,11 @@ func Test_assert_inrange() call remove(v:errors, 0) " Use a custom message + call assert_equal(1, assert_inrange(5, 7, 8, "Higher")) + call assert_match("Higher: Expected range 5 - 7, but got 8", v:errors[0]) + call remove(v:errors, 0) call assert_equal(1, assert_inrange(5, 7, 8.0, "Higher")) - call assert_match("Higher", v:errors[0]) + call assert_match("Higher: Expected range 5.0 - 7.0, but got 8.0", v:errors[0]) call remove(v:errors, 0) " Invalid arguments -- cgit