aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/server_requests_spec.lua
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-10-16 14:23:36 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-10-16 14:23:36 -0300
commit388e75e4b0f602ac5dd70e1ceeb1d1a18a37c51e (patch)
tree8ae4c703deff5a369cd35c7580351e320faa6d93 /test/functional/api/server_requests_spec.lua
parent0a2d9fa8c88b6e263b9baa9b639c23321272f9bf (diff)
parent0c2ec77ae0c0bde70b168313f89fa3259682a056 (diff)
downloadrneovim-388e75e4b0f602ac5dd70e1ceeb1d1a18a37c51e.tar.gz
rneovim-388e75e4b0f602ac5dd70e1ceeb1d1a18a37c51e.tar.bz2
rneovim-388e75e4b0f602ac5dd70e1ceeb1d1a18a37c51e.zip
Merge PR #1296 'Use the lua client to run functional tests'
Diffstat (limited to 'test/functional/api/server_requests_spec.lua')
-rw-r--r--test/functional/api/server_requests_spec.lua68
1 files changed, 68 insertions, 0 deletions
diff --git a/test/functional/api/server_requests_spec.lua b/test/functional/api/server_requests_spec.lua
new file mode 100644
index 0000000000..b6f56a868c
--- /dev/null
+++ b/test/functional/api/server_requests_spec.lua
@@ -0,0 +1,68 @@
+-- Tests for some server->client RPC scenarios. Note that unlike with
+-- `rpcnotify`, to evaluate `rpcrequest` calls we need the client event loop to
+-- be running.
+local helpers = require('test.functional.helpers')
+local clear, nvim, eval, eq, run, stop = helpers.clear, helpers.nvim,
+ helpers.eval, helpers.eq, helpers.run, helpers.stop
+
+
+describe('server -> client', function()
+ local cid
+
+ before_each(function()
+ clear()
+ cid = nvim('get_api_info')[1]
+ end)
+
+ describe('simple call', function()
+ it('works', function()
+ local function on_setup()
+ eq({4, 5, 6}, eval('rpcrequest('..cid..', "scall", 1, 2, 3)'))
+ stop()
+ end
+
+ local function on_request(method, args)
+ eq('scall', method)
+ eq({1, 2, 3}, args)
+ nvim('command', 'let g:result = [4, 5, 6]')
+ return eval('g:result')
+ end
+ run(on_request, nil, on_setup)
+ end)
+ end)
+
+ describe('recursive call', function()
+ it('works', function()
+ local function on_setup()
+ nvim('set_var', 'result1', 0)
+ nvim('set_var', 'result2', 0)
+ nvim('set_var', 'result3', 0)
+ nvim('set_var', 'result4', 0)
+ nvim('command', 'let g:result1 = rpcrequest('..cid..', "rcall", 2)')
+ eq(4, nvim('get_var', 'result1'))
+ eq(8, nvim('get_var', 'result2'))
+ eq(16, nvim('get_var', 'result3'))
+ eq(32, nvim('get_var', 'result4'))
+ stop()
+ end
+
+ local function on_request(method, args)
+ eq('rcall', method)
+ local n = unpack(args) * 2
+ if n <= 16 then
+ local cmd
+ if n == 4 then
+ cmd = 'let g:result2 = rpcrequest('..cid..', "rcall", '..n..')'
+ elseif n == 8 then
+ cmd = 'let g:result3 = rpcrequest('..cid..', "rcall", '..n..')'
+ elseif n == 16 then
+ cmd = 'let g:result4 = rpcrequest('..cid..', "rcall", '..n..')'
+ end
+ nvim('command', cmd)
+ end
+ return n
+ end
+ run(on_request, nil, on_setup)
+ end)
+ end)
+end)