diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-10-27 13:08:01 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-10-27 13:10:33 +0800 |
commit | 762ca67091d13336f90350a15e0a1b965d6d5c01 (patch) | |
tree | 4efcd2a9392b1cdfc3484eb712307c227c6d4667 /src | |
parent | 25cf4f2fc712530a65dc3b533508c36d0439b728 (diff) | |
download | rneovim-762ca67091d13336f90350a15e0a1b965d6d5c01.tar.gz rneovim-762ca67091d13336f90350a15e0a1b965d6d5c01.tar.bz2 rneovim-762ca67091d13336f90350a15e0a1b965d6d5c01.zip |
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.
https://github.com/vim/vim/commit/b3d83980d2ac0f7a25314270416f17af874ca269
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/testdir/test_functions.vim | 6 | ||||
-rw-r--r-- | src/nvim/testing.c | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/nvim/testdir/test_functions.vim b/src/nvim/testdir/test_functions.vim index b751215b79..fa79aaf6d7 100644 --- a/src/nvim/testdir/test_functions.vim +++ b/src/nvim/testdir/test_functions.vim @@ -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:') diff --git a/src/nvim/testing.c b/src/nvim/testing.c index 348d5c6e29..45134db14f 100644 --- a/src/nvim/testing.c +++ b/src/nvim/testing.c @@ -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 |