# HG changeset patch # User Christian Brabandt # Date 1485623704 -3600 # Node ID 8ba322dad776e92862d803fe902e39af87a486b6 # Parent 1d457d3a475189b012e49ea1445b4e211f250021 patch 8.0.0254: error message of assert functions is sometimes incomplete commit https://github.com/vim/vim/commit/c7b831ca154537505f5a22d01335a86b2e9cb023 Author: Bram Moolenaar Date: Sat Jan 28 18:08:12 2017 +0100 patch 8.0.0254: error message of assert functions is sometimes incomplete Problem: When using an assert function one can either specify a message or get a message about what failed, not both. Solution: Concatenate the error with the message. diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -9240,35 +9240,34 @@ fill_assert_error( if (opt_msg_tv->v_type != VAR_UNKNOWN) { - ga_concat(gap, tv2string(opt_msg_tv, &tofree, numbuf, 0)); + ga_concat(gap, echo_string(opt_msg_tv, &tofree, numbuf, 0)); + vim_free(tofree); + ga_concat(gap, (char_u *)": "); + } + + if (atype == ASSERT_MATCH || atype == ASSERT_NOTMATCH) + ga_concat(gap, (char_u *)"Pattern "); + else if (atype == ASSERT_NOTEQUAL) + ga_concat(gap, (char_u *)"Expected not equal to "); + else + ga_concat(gap, (char_u *)"Expected "); + if (exp_str == NULL) + { + ga_concat_esc(gap, tv2string(exp_tv, &tofree, numbuf, 0)); vim_free(tofree); } else - { - if (atype == ASSERT_MATCH || atype == ASSERT_NOTMATCH) - ga_concat(gap, (char_u *)"Pattern "); - else if (atype == ASSERT_NOTEQUAL) - ga_concat(gap, (char_u *)"Expected not equal to "); - else - ga_concat(gap, (char_u *)"Expected "); - if (exp_str == NULL) - { - ga_concat_esc(gap, tv2string(exp_tv, &tofree, numbuf, 0)); - vim_free(tofree); - } + ga_concat_esc(gap, exp_str); + if (atype != ASSERT_NOTEQUAL) + { + if (atype == ASSERT_MATCH) + ga_concat(gap, (char_u *)" does not match "); + else if (atype == ASSERT_NOTMATCH) + ga_concat(gap, (char_u *)" does match "); else - ga_concat_esc(gap, exp_str); - if (atype != ASSERT_NOTEQUAL) - { - if (atype == ASSERT_MATCH) - ga_concat(gap, (char_u *)" does not match "); - else if (atype == ASSERT_NOTMATCH) - ga_concat(gap, (char_u *)" does match "); - else - ga_concat(gap, (char_u *)" but got "); - ga_concat_esc(gap, tv2string(got_tv, &tofree, numbuf, 0)); - vim_free(tofree); - } + ga_concat(gap, (char_u *)" but got "); + ga_concat_esc(gap, tv2string(got_tv, &tofree, numbuf, 0)); + vim_free(tofree); } } diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim --- a/src/testdir/test_assert.vim +++ b/src/testdir/test_assert.vim @@ -121,6 +121,12 @@ func Test_assert_inrange() call assert_fails('call assert_inrange(1, 1)', 'E119:') endfunc +func Test_assert_with_msg() + call assert_equal('foo', 'bar', 'testing') + call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0]) + call remove(v:errors, 0) +endfunc + func Test_user_is_happy() smile sleep 300m diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 254, +/**/ 253, /**/ 252,