aboutsummaryrefslogtreecommitdiff
path: root/test/functional/shada/helpers.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2015-07-26 01:52:50 +0300
committerZyX <kp-pav@yandex.ru>2015-10-08 22:00:15 +0300
commite2994a3c62265a26a632ed7cd4d11ce4fb711586 (patch)
treedbc0d392d00e93b7bdd4e7a592bfaa6118bf2d2d /test/functional/shada/helpers.lua
parentb7ca976f730b4648d4f1cf48ea894ee0a8ae8e72 (diff)
downloadrneovim-e2994a3c62265a26a632ed7cd4d11ce4fb711586.tar.gz
rneovim-e2994a3c62265a26a632ed7cd4d11ce4fb711586.tar.bz2
rneovim-e2994a3c62265a26a632ed7cd4d11ce4fb711586.zip
shada,functests: Test how ShaDa support code reacts on errors
Some notes: - Replaced msgpack_unpacker usage with regular xmalloc’ed buffer. Also since msgpack_unpack_next (as well as msgpack_unpacker_next) is not ever going to return MSGPACK_UNPACK_EXTRA_BYTES this condition was checked manually. Function that does return this status is msgpack_unpack, but it is marked as obsolete. - Zero type is checked prior to main switch in shada_read_next_item because otherwise check would be skipped. - Zeroing entry at the start of shada_read_next_item makes it safer. - dedent('') does not work. - v:oldfiles list is only replaced with bang, if it is NULL or empty.
Diffstat (limited to 'test/functional/shada/helpers.lua')
-rw-r--r--test/functional/shada/helpers.lua19
1 files changed, 17 insertions, 2 deletions
diff --git a/test/functional/shada/helpers.lua b/test/functional/shada/helpers.lua
index 7e93fcb915..909fcd62e6 100644
--- a/test/functional/shada/helpers.lua
+++ b/test/functional/shada/helpers.lua
@@ -1,6 +1,7 @@
local helpers = require('test.functional.helpers')
-local spawn, set_session, nvim, nvim_prog =
- helpers.spawn, helpers.set_session, helpers.nvim, helpers.nvim_prog
+local spawn, set_session, nvim, nvim_prog, nvim_command, nvim_eval =
+ helpers.spawn, helpers.set_session, helpers.nvim, helpers.nvim_prog,
+ helpers.command, helpers.eval
local tmpname = os.tmpname()
local additional_cmd = ''
@@ -46,8 +47,22 @@ local clear = function()
set_additional_cmd('')
end
+local exc_exec = function(cmd)
+ nvim_command(([[
+ try
+ execute "%s"
+ catch
+ let g:__exception = v:exception
+ endtry
+ ]]):format(cmd:gsub('\n', '\\n'):gsub('[\\"]', '\\%0')))
+ local ret = nvim_eval('get(g:, "__exception", 0)')
+ nvim_command('unlet! g:__exception')
+ return ret
+end
+
return {
reset=reset,
set_additional_cmd=set_additional_cmd,
clear=clear,
+ exc_exec=exc_exec,
}