Mercurial > vim
changeset 27412:557a50b0d10b v8.2.4234
patch 8.2.4234: test_garbagecollect_now() does not check v:testing
Commit: https://github.com/vim/vim/commit/b3d83980d2ac0f7a25314270416f17af874ca269
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jan 27 19:59:47 2022 +0000
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 27 Jan 2022 21:00:04 +0100 |
parents | 2689052e59cd |
children | ab980265df4a |
files | src/errors.h src/testdir/test_functions.vim src/testing.c src/version.c |
diffstat | 4 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/errors.h +++ b/src/errors.h @@ -2909,7 +2909,8 @@ EXTERN char e_for_argument_must_be_seque INIT(= N_("E1140: :for argument must be a sequence of lists")); EXTERN char e_indexable_type_required[] INIT(= N_("E1141: Indexable type required")); -// E1142 unused +EXTERN char e_calling_test_garbagecollect_now_while_v_testing_is_not_set[] + INIT(= N_("E1142: Calling test_garbagecollect_now() while v:testing is not set")); EXTERN char e_empty_expression_str[] INIT(= N_("E1143: Empty expression: \"%s\"")); EXTERN char e_command_str_not_followed_by_white_space_str[]
--- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -2663,6 +2663,12 @@ func Test_range() call assert_fails('let x=range(1, 4, [])', 'E745:') endfunc +func Test_garbagecollect_now_fails() + let v:testing = 0 + call assert_fails('call test_garbagecollect_now()', 'E1142:') + let v:testing = 1 +endfunc + func Test_echoraw() CheckScreendump
--- a/src/testing.c +++ b/src/testing.c @@ -1153,7 +1153,10 @@ f_test_garbagecollect_now(typval_T *argv { // 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); } /*