changeset 14897:0c845463a0db v8.1.0460

patch 8.1.0460: assert_fails() does not take a message argument commit https://github.com/vim/vim/commit/1307d1c003b01b4f67524c95feb07c3d91c7c428 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Oct 7 20:16:49 2018 +0200 patch 8.1.0460: assert_fails() does not take a message argument Problem: assert_fails() does not take a message argument Solution: Add the argument.
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Oct 2018 20:30:06 +0200
parents 73e3c6e6257c
children 732f1b2f4cc0
files src/eval.c src/evalfunc.c src/testdir/test_assert.vim src/version.c
diffstat 4 files changed, 22 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -9041,6 +9041,8 @@ assert_fails(typval_T *argvars)
     char_u	*cmd = get_tv_string_chk(&argvars[0]);
     garray_T	ga;
     int		ret = 0;
+    char_u	numbuf[NUMBUFLEN];
+    char_u	*tofree;
 
     called_emsg = FALSE;
     suppress_errthrow = TRUE;
@@ -9050,7 +9052,14 @@ assert_fails(typval_T *argvars)
     {
 	prepare_assert_error(&ga);
 	ga_concat(&ga, (char_u *)"command did not fail: ");
-	ga_concat(&ga, cmd);
+	if (argvars[1].v_type != VAR_UNKNOWN
+					   && argvars[2].v_type != VAR_UNKNOWN)
+	{
+	    ga_concat(&ga, echo_string(&argvars[2], &tofree, numbuf, 0));
+	    vim_free(tofree);
+	}
+	else
+	    ga_concat(&ga, cmd);
 	assert_error(&ga);
 	ga_clear(&ga);
 	ret = 1;
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -512,7 +512,7 @@ static struct fst
     {"assert_equal",	2, 3, f_assert_equal},
     {"assert_equalfile", 2, 2, f_assert_equalfile},
     {"assert_exception", 1, 2, f_assert_exception},
-    {"assert_fails",	1, 2, f_assert_fails},
+    {"assert_fails",	1, 3, f_assert_fails},
     {"assert_false",	1, 2, f_assert_false},
     {"assert_inrange",	3, 4, f_assert_inrange},
     {"assert_match",	2, 3, f_assert_match},
@@ -1507,7 +1507,7 @@ f_assert_exception(typval_T *argvars, ty
 }
 
 /*
- * "assert_fails(cmd [, error])" function
+ * "assert_fails(cmd [, error[, msg]])" function
  */
     static void
 f_assert_fails(typval_T *argvars, typval_T *rettv)
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -152,6 +152,14 @@ func Test_assert_fail_fails()
   call assert_equal(1, assert_fails('xxx', {}))
   call assert_match("Expected {} but got 'E731:", v:errors[0])
   call remove(v:errors, 0)
+
+  call assert_equal(1, assert_fails('xxx', {}, 'stupid'))
+  call assert_match("stupid: Expected {} but got 'E731:", v:errors[0])
+  call remove(v:errors, 0)
+
+  call assert_equal(1, assert_fails('echo', '', 'echo command'))
+  call assert_match("command did not fail: echo command", v:errors[0])
+  call remove(v:errors, 0)
 endfunc
 
 func Test_assert_beeps()
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    460,
+/**/
     459,
 /**/
     458,