]> granicus.if.org Git - vim/commitdiff
patch 8.2.4234: test_garbagecollect_now() does not check v:testing v8.2.4234
authorBram Moolenaar <Bram@vim.org>
Thu, 27 Jan 2022 19:59:47 +0000 (19:59 +0000)
committerBram Moolenaar <Bram@vim.org>
Thu, 27 Jan 2022 19:59:47 +0000 (19:59 +0000)
Problem:    test_garbagecollect_now() does not check v:testing as documented.
Solution:   Give an error if v:testing is not set.

src/errors.h
src/testdir/test_functions.vim
src/testing.c
src/version.c

index dd1b9fcc85be9f016805e178009f7004f5808c27..6d3d06d26b93c7afb93e4407d2d02bc93fd4740a 100644 (file)
@@ -2909,7 +2909,8 @@ EXTERN char e_for_argument_must_be_sequence_of_lists[]
        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[]
index 917e89f351aefdbc92ed097d7b9b03d47ad308ad..ff079168f17820101195b50d985c70ae31a07d2d 100644 (file)
@@ -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
 
index 675eaa2499798cb7d2c6d7b61e539ab984b2ae00..4e688a71d005f9eb8741f15cdb69b05907ed3853 100644 (file)
@@ -1153,7 +1153,10 @@ f_test_garbagecollect_now(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
 {
     // 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);
 }
 
 /*
index bc956cee0a66acedcf911785ec5dd05c8c7e2120..7247ca75378c8aff133f4caef156d0db102a4276 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4234,
 /**/
     4233,
 /**/