diff options
Diffstat (limited to 'test/functional/plugin/msgpack_spec.lua')
-rw-r--r-- | test/functional/plugin/msgpack_spec.lua | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/functional/plugin/msgpack_spec.lua b/test/functional/plugin/msgpack_spec.lua index 18ff0f5156..9cbfacd936 100644 --- a/test/functional/plugin/msgpack_spec.lua +++ b/test/functional/plugin/msgpack_spec.lua @@ -697,3 +697,27 @@ describe('In autoload/msgpack.vim', function() end) end) end) + +describe('msgpackdump() function', function() + before_each(reset) + + it('uses msgpack#string for dumping fref error messages for special map keys', function() + nvim_command('let todump = {"_TYPE": v:msgpack_types.map, "_VAL": [[{"_TYPE": v:msgpack_types.string, "_VAL": ["abc"]}, [function("tr")]]]}') + eq('Vim(call):E951: Error while dumping msgpackdump() argument, index 0, key ="abc" at index 0 from special map, index 0: attempt to dump function reference', + exc_exec('call msgpackdump([todump])')) + end) + + it('falls back to using string() in case of error (fref)', function() + nvim_command('let todump = {"_TYPE": v:msgpack_types.map, "_VAL": [[[function("tr")], []]]}') + nvim_command('call add(todump._VAL[0][0], todump._VAL[0][0])') + eq('Vim(call):E951: Error while dumping msgpackdump() argument, index 0, key [function(\'tr\'), {E724@0}] at index 0 from special map, index 0: attempt to dump function reference', + exc_exec('call msgpackdump([todump])')) + end) + + it('falls back to using string() in case of error (recurse)', function() + nvim_command('let todump = {"_TYPE": v:msgpack_types.map, "_VAL": [[[], []]]}') + nvim_command('call add(todump._VAL[0][0], todump._VAL[0][0])') + eq('Vim(call):E952: Unable to dump msgpackdump() argument, index 0: container references itself in key [{E724@0}] at index 0 from special map, index 0', + exc_exec('call msgpackdump([todump])')) + end) +end) |