vim-patch:8.2.4234: test_garbagecollect_now() does not check v:testing

Problem:    test_garbagecollect_now() does not check v:testing as documented.
Solution:   Give an error if v:testing is not set.

b3d83980d2

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2022-10-27 13:08:01 +08:00
parent 25cf4f2fc7
commit 762ca67091
2 changed files with 14 additions and 1 deletions

View File

@@ -2206,6 +2206,12 @@ func Test_range()
call assert_equal([0, 1, 2, 3, 4], uniq(range(5)))
endfunc
func Test_garbagecollect_now_fails()
let v:testing = 0
call assert_fails('call test_garbagecollect_now()', 'E1142:')
let v:testing = 1
endfunc
" Test for the eval() function
func Test_eval()
call assert_fails("call eval('5 a')", 'E488:')

View File

@@ -14,6 +14,9 @@
# include "testing.c.generated.h"
#endif
static char e_calling_test_garbagecollect_now_while_v_testing_is_not_set[]
= N_("E1142: Calling test_garbagecollect_now() while v:testing is not set");
/// Prepare "gap" for an assert error and add the sourcing position.
static void prepare_assert_error(garray_T *gap)
{
@@ -614,7 +617,11 @@ void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv, EvalFuncData
{
// This is dangerous, any Lists and Dicts used internally may be freed
// while still in use.
garbage_collect(true);
if (!get_vim_var_nr(VV_TESTING)) {
emsg(_(e_calling_test_garbagecollect_now_while_v_testing_is_not_set));
} else {
garbage_collect(true);
}
}
/// "test_write_list_log()" function