diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-09-21 17:03:46 -0400 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-09-21 14:03:46 -0700 |
commit | b3e56957f8e9468497e5db508d97d7b560ccfe85 (patch) | |
tree | a268fb727adda47f9b3fd729fa3ba5b2f2fe30d7 | |
parent | d6f658e38fc6a44dfc43af9eef3ae09452a8c2a5 (diff) | |
download | rneovim-b3e56957f8e9468497e5db508d97d7b560ccfe85.tar.gz rneovim-b3e56957f8e9468497e5db508d97d7b560ccfe85.tar.bz2 rneovim-b3e56957f8e9468497e5db508d97d7b560ccfe85.zip |
vim-patch:8.1.0460: assert_fails() message argument #11051
Problem: assert_fails() does not take a message argument
Solution: Add the argument.
https://github.com/vim/vim/commit/1307d1c003b01b4f67524c95feb07c3d91c7c428
-rw-r--r-- | src/nvim/eval.c | 11 | ||||
-rw-r--r-- | src/nvim/eval.lua | 2 | ||||
-rw-r--r-- | test/functional/legacy/assert_spec.lua | 18 |
3 files changed, 25 insertions, 6 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 248edfc9cc..7d45787fae 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -7076,7 +7076,7 @@ static void f_assert_exception(typval_T *argvars, typval_T *rettv, FunPtr fptr) rettv->vval.v_number = assert_exception(argvars); } -/// "assert_fails(cmd [, error])" function +/// "assert_fails(cmd [, error [, msg]])" function static void f_assert_fails(typval_T *argvars, typval_T *rettv, FunPtr fptr) { const char *const cmd = tv_get_string_chk(&argvars[0]); @@ -7094,7 +7094,14 @@ static void f_assert_fails(typval_T *argvars, typval_T *rettv, FunPtr fptr) if (!called_emsg) { prepare_assert_error(&ga); ga_concat(&ga, (const char_u *)"command did not fail: "); - ga_concat(&ga, (const char_u *)cmd); + if (argvars[1].v_type != VAR_UNKNOWN + && argvars[2].v_type != VAR_UNKNOWN) { + char *const tofree = encode_tv2echo(&argvars[2], NULL); + ga_concat(&ga, (char_u *)tofree); + xfree(tofree); + } else { + ga_concat(&ga, (const char_u *)cmd); + } assert_error(&ga); ga_clear(&ga); ret = 1; diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index 8efbcc71f1..0ae250e626 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -30,7 +30,7 @@ return { assert_equal={args={2, 3}}, assert_equalfile={args=2}, assert_exception={args={1, 2}}, - assert_fails={args={1, 2}}, + assert_fails={args={1, 3}}, assert_false={args={1, 2}}, assert_inrange={args={3, 4}}, assert_match={args={2, 3}}, diff --git a/test/functional/legacy/assert_spec.lua b/test/functional/legacy/assert_spec.lua index 97c1f1405c..3cb5d97869 100644 --- a/test/functional/legacy/assert_spec.lua +++ b/test/functional/legacy/assert_spec.lua @@ -3,6 +3,7 @@ local nvim, call = helpers.meths, helpers.call local clear, eq = helpers.clear, helpers.eq local source, command = helpers.source, helpers.command local exc_exec = helpers.exc_exec +local eval = helpers.eval local function expected_errors(errors) eq(errors, nvim.get_vvar('errors')) @@ -233,20 +234,31 @@ describe('assert function:', function() -- assert_fails({cmd}, [, {error}]) describe('assert_fails', function() it('should change v:errors when error does not match v:errmsg', function() - command([[call assert_fails('xxx', {})]]) + eq(1, eval([[assert_fails('xxx', {})]])) command([[call assert_match("Expected {} but got 'E731:", v:errors[0])]]) expected_errors({"Expected {} but got 'E731: using Dictionary as a String'"}) end) it('should not change v:errors when cmd errors', function() - call('assert_fails', 'NonexistentCmd') + eq(0, eval([[assert_fails('NonexistentCmd')]])) expected_empty() end) it('should change v:errors when cmd succeeds', function() - call('assert_fails', 'call empty("")') + eq(1, eval([[assert_fails('call empty("")', '')]])) expected_errors({'command did not fail: call empty("")'}) end) + + it('can specify and get a message about what failed', function() + eq(1, eval([[assert_fails('xxx', {}, 'stupid')]])) + command([[call assert_match("stupid: Expected {} but got 'E731:", v:errors[0])]]) + expected_errors({"stupid: Expected {} but got 'E731: using Dictionary as a String'"}) + end) + + it('can specify and get a message even when cmd succeeds', function() + eq(1, eval([[assert_fails('echo', '', 'echo command')]])) + expected_errors({'command did not fail: echo command'}) + end) end) -- assert_inrange({lower}, {upper}, {actual}[, {msg}]) |