aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-11-07 01:03:25 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-11-07 01:03:25 -0300
commit7ded32ad3b869b429a617367ea9af4c66a50df1e (patch)
tree28162846bb315097b163127448ec87a33ebaef59 /test
parent8455fd5e338624a76bd2e4b3176f51eeac76ff7b (diff)
parent168a46fd316812ad0393101cf65eef1442d2605a (diff)
downloadrneovim-7ded32ad3b869b429a617367ea9af4c66a50df1e.tar.gz
rneovim-7ded32ad3b869b429a617367ea9af4c66a50df1e.tar.bz2
rneovim-7ded32ad3b869b429a617367ea9af4c66a50df1e.zip
Merge PR #1421 'Improve test error handling and reporting'
Diffstat (limited to 'test')
-rw-r--r--test/functional/api/server_requests_spec.lua4
-rw-r--r--test/functional/helpers.lua119
-rw-r--r--test/functional/legacy/006_argument_list_spec.lua2
-rw-r--r--test/functional/legacy/007_ball_buffer_list_spec.lua2
-rw-r--r--test/functional/legacy/021_control_wi_spec.lua2
-rw-r--r--test/functional/legacy/023_edit_arguments_spec.lua4
-rw-r--r--test/functional/legacy/041_writing_and_reading_hundred_kbyte_spec.lua2
-rw-r--r--test/functional/legacy/options_spec.lua3
8 files changed, 49 insertions, 89 deletions
diff --git a/test/functional/api/server_requests_spec.lua b/test/functional/api/server_requests_spec.lua
index 916bdfd9f0..a37c41294b 100644
--- a/test/functional/api/server_requests_spec.lua
+++ b/test/functional/api/server_requests_spec.lua
@@ -4,7 +4,6 @@
local helpers = require('test.functional.helpers')
local clear, nvim, eval = helpers.clear, helpers.nvim, helpers.eval
local eq, run, stop = helpers.eq, helpers.run, helpers.stop
-local restart = helpers.restart
@@ -15,7 +14,6 @@ describe('server -> client', function()
clear()
cid = nvim('get_api_info')[1]
end)
- teardown(restart)
describe('simple call', function()
it('works', function()
@@ -110,7 +108,7 @@ describe('server -> client', function()
return
end
notified = notified + 1
- eq('notified', eval('rpcrequest('..cid..', "notify")'))
+ eq('notified!', eval('rpcrequest('..cid..', "notify")'))
end
run(on_request, on_notification, on_setup)
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index 70f4fcf9e5..fcef1bd621 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -1,10 +1,11 @@
+require('coxpcall')
local Loop = require('nvim.loop')
local MsgpackStream = require('nvim.msgpack_stream')
local AsyncSession = require('nvim.async_session')
local Session = require('nvim.session')
local nvim_prog = os.getenv('NVIM_PROG') or 'build/bin/nvim'
-local nvim_argv = {nvim_prog, '-u', 'NONE', '-N', '--embed'}
+local nvim_argv = {nvim_prog, '-u', 'NONE', '-i', 'NONE', '-N', '--embed'}
if os.getenv('VALGRIND') then
local log_file = os.getenv('VALGRIND_LOG') or 'valgrind-%p.log'
@@ -23,74 +24,7 @@ if os.getenv('VALGRIND') then
nvim_argv = valgrind_argv
end
-local session
-
-local rawfeed
-local function restart()
- local loop = Loop.new()
- local msgpack_stream = MsgpackStream.new(loop)
- local async_session = AsyncSession.new(msgpack_stream)
- session = Session.new(async_session)
- loop:spawn(nvim_argv)
- rawfeed([[:function BeforeEachTest()
- set all&
- redir => groups
- silent augroup
- redir END
- for group in split(groups)
- exe 'augroup '.group
- autocmd!
- augroup END
- endfor
- autocmd!
- tabnew
- let curbufnum = eval(bufnr('%'))
- redir => buflist
- silent ls!
- redir END
- let bufnums = []
- for buf in split(buflist, '\n')
- let bufnum = eval(split(buf, '[ u]')[0])
- if bufnum != curbufnum
- call add(bufnums, bufnum)
- endif
- endfor
- if len(bufnums) > 0
- exe 'silent bwipeout! '.join(bufnums, ' ')
- endif
- silent tabonly
- for k in keys(g:)
- exe 'unlet g:'.k
- endfor
- filetype plugin indent off
- mapclear
- mapclear!
- abclear
- comclear
- let regs = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"'
- let i = 0
- while i < strlen(regs)
- call setreg(regs[i], '')
- let i = i+1
- endwhile
- redir => funcs
- silent! function
- redir END
- for fname in split(funcs, '\n')
- let matches = matchlist(fname, '\v^function ([^()<>]+)')
- if type([]) == type(matches) && matches[1] !~ 'BeforeEachTest'
- exe 'silent! delfunc '.matches[1]
- endif
- endfor
- let options = ['shell', 'fileignorecase']
- for option in options
- exe 'set '.option.'&'
- endfor
- endfunction
- ]])
-end
-
-local loop_running, last_error
+local session, loop_running, last_error
local function request(method, ...)
local status, rv = session:request(method, ...)
@@ -112,9 +46,32 @@ local function next_message()
return session:next_message()
end
+local function call_and_stop_on_error(...)
+ local status, result = copcall(...)
+ if not status then
+ session:stop()
+ last_error = result
+ return ''
+ end
+ return result
+end
+
local function run(request_cb, notification_cb, setup_cb)
+
+ local function on_request(method, args)
+ return call_and_stop_on_error(request_cb, method, args)
+ end
+
+ local function on_notification(method, args)
+ call_and_stop_on_error(notification_cb, method, args)
+ end
+
+ local function on_setup()
+ call_and_stop_on_error(setup_cb)
+ end
+
loop_running = true
- session:run(request_cb, notification_cb, setup_cb)
+ session:run(on_request, on_notification, on_setup)
loop_running = false
if last_error then
local err = last_error
@@ -153,7 +110,7 @@ local function buffer_slice(start, stop, buffer_idx)
end
local function nvim_replace_termcodes(input)
- return request('vim_replace_termcodes', input, false, true, true )
+ return request('vim_replace_termcodes', input, false, true, true)
end
local function dedent(str)
@@ -178,22 +135,29 @@ local function dedent(str)
return str
end
-local function clear()
- nvim_command('call BeforeEachTest()')
-end
-
local function feed(...)
for _, v in ipairs({...}) do
nvim_feed(nvim_replace_termcodes(dedent(v)))
end
end
-function rawfeed(...)
+local function rawfeed(...)
for _, v in ipairs({...}) do
nvim_feed(dedent(v), 'nt')
end
end
+local function clear()
+ if session then
+ session:request('vim_command', 'qa!')
+ end
+ local loop = Loop.new()
+ local msgpack_stream = MsgpackStream.new(loop)
+ local async_session = AsyncSession.new(msgpack_stream)
+ session = Session.new(async_session)
+ loop:spawn(nvim_argv)
+end
+
local function insert(...)
nvim_feed('i', 'nt')
rawfeed(...)
@@ -271,12 +235,11 @@ local function curtab(method, ...)
return tabpage(method, tab, ...)
end
-restart()
+clear()
return {
clear = clear,
dedent = dedent,
- restart = restart,
rawfeed = rawfeed,
insert = insert,
feed = feed,
diff --git a/test/functional/legacy/006_argument_list_spec.lua b/test/functional/legacy/006_argument_list_spec.lua
index 30fb9a55ff..1266a876d4 100644
--- a/test/functional/legacy/006_argument_list_spec.lua
+++ b/test/functional/legacy/006_argument_list_spec.lua
@@ -50,7 +50,7 @@ describe('argument list', function()
execute('%d')
execute('0put=@a')
- execute('1d | $d')
+ execute('$d')
eq(dedent([[
start of test file Xxx1
diff --git a/test/functional/legacy/007_ball_buffer_list_spec.lua b/test/functional/legacy/007_ball_buffer_list_spec.lua
index 6d89323215..295f63f044 100644
--- a/test/functional/legacy/007_ball_buffer_list_spec.lua
+++ b/test/functional/legacy/007_ball_buffer_list_spec.lua
@@ -51,7 +51,7 @@ describe(':ball', function()
execute('bf')
execute('%d')
execute('0put=@a')
- execute('1d | $d')
+ execute('$d')
expect([[
start of test file Xxx4
diff --git a/test/functional/legacy/021_control_wi_spec.lua b/test/functional/legacy/021_control_wi_spec.lua
index f1f529e9a8..9fd83fec5f 100644
--- a/test/functional/legacy/021_control_wi_spec.lua
+++ b/test/functional/legacy/021_control_wi_spec.lua
@@ -31,7 +31,7 @@ describe('CTRL-W CTRL-I', function()
-- Clean buffer and put register
feed('ggdG"ap')
- execute('1,2d')
+ execute('1d')
-- The buffer should now contain:
expect([[
diff --git a/test/functional/legacy/023_edit_arguments_spec.lua b/test/functional/legacy/023_edit_arguments_spec.lua
index b5955c5987..e68af9758d 100644
--- a/test/functional/legacy/023_edit_arguments_spec.lua
+++ b/test/functional/legacy/023_edit_arguments_spec.lua
@@ -35,8 +35,8 @@ describe(':edit', function()
execute('%d')
execute('0put a')
- -- Remove empty lines
- execute('1d | $d')
+ -- Remove empty line
+ execute('$d')
-- The buffer should now contain
expect([[
diff --git a/test/functional/legacy/041_writing_and_reading_hundred_kbyte_spec.lua b/test/functional/legacy/041_writing_and_reading_hundred_kbyte_spec.lua
index ed1a914c0f..42fb5ed2b3 100644
--- a/test/functional/legacy/041_writing_and_reading_hundred_kbyte_spec.lua
+++ b/test/functional/legacy/041_writing_and_reading_hundred_kbyte_spec.lua
@@ -25,7 +25,7 @@ describe('writing and reading a file of over 100 Kbyte', function()
execute('6005yank A')
execute('%d')
execute('0put a')
- execute('1d | $d')
+ execute('$d')
execute('w!')
expect([[
diff --git a/test/functional/legacy/options_spec.lua b/test/functional/legacy/options_spec.lua
index 983d168609..773acb9663 100644
--- a/test/functional/legacy/options_spec.lua
+++ b/test/functional/legacy/options_spec.lua
@@ -2,11 +2,10 @@
-- other tests, so restart nvim in the teardown hook
local helpers = require('test.functional.helpers')
-local restart, command, clear = helpers.restart, helpers.command, helpers.clear
+local command, clear = helpers.command, helpers.clear
describe('options', function()
setup(clear)
- teardown(restart)
it('is working', function()
command('options')