aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2018-11-29 23:26:21 +0100
committerJustin M. Keyes <justinkz@gmail.com>2019-05-18 14:51:01 +0200
commit2b87485c22e2e42eba54d57454b33dca02f9d67c (patch)
tree15385805b9d9ecf75aba1eac29e04c75cd6f99d1
parent8e22c4510eb9220f7ead6493fdcfdd7bf1f53d3b (diff)
downloadrneovim-2b87485c22e2e42eba54d57454b33dca02f9d67c.tar.gz
rneovim-2b87485c22e2e42eba54d57454b33dca02f9d67c.tar.bz2
rneovim-2b87485c22e2e42eba54d57454b33dca02f9d67c.zip
test: Extend {unit,functional}.helpers with global helpers
Automatically include all "global helper" util functions in the unit.helpers and functional.helpers and modules. So tests don't need to expicitly do: local global_helpers = require('test.helpers')
-rw-r--r--test/functional/api/server_requests_spec.lua5
-rw-r--r--test/functional/helpers.lua25
-rw-r--r--test/helpers.lua32
-rw-r--r--test/unit/helpers.lua5
4 files changed, 37 insertions, 30 deletions
diff --git a/test/functional/api/server_requests_spec.lua b/test/functional/api/server_requests_spec.lua
index 4d25ba0819..7d9a8269d9 100644
--- a/test/functional/api/server_requests_spec.lua
+++ b/test/functional/api/server_requests_spec.lua
@@ -1,7 +1,6 @@
-- Test server -> client RPC scenarios. Note: unlike `rpcnotify`, to evaluate
-- `rpcrequest` calls we need the client event loop to be running.
local helpers = require('test.functional.helpers')(after_each)
-local Paths = require('test.config.paths')
local clear, nvim, eval = helpers.clear, helpers.nvim, helpers.eval
local eq, neq, run, stop = helpers.eq, helpers.neq, helpers.run, helpers.stop
@@ -243,8 +242,8 @@ describe('server -> client', function()
\ 'rpc': v:true
\ }
]])
- local lua_prog = Paths.test_lua_prg
- meths.set_var("args", {lua_prog, 'test/functional/api/rpc_fixture.lua'})
+ meths.set_var("args", {helpers.test_lua_prg,
+ 'test/functional/api/rpc_fixture.lua'})
jobid = eval("jobstart(g:args, g:job_opts)")
neq(0, 'jobid')
end)
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index fd10a6afcd..00acd12247 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -8,20 +8,12 @@ local Session = require('nvim.session')
local TcpStream = require('nvim.tcp_stream')
local SocketStream = require('nvim.socket_stream')
local ChildProcessStream = require('nvim.child_process_stream')
-local Paths = require('test.config.paths')
local check_cores = global_helpers.check_cores
local check_logs = global_helpers.check_logs
local dedent = global_helpers.dedent
local eq = global_helpers.eq
-local expect_err = global_helpers.expect_err
-local filter = global_helpers.filter
-local map = global_helpers.map
-local matches = global_helpers.matches
-local near = global_helpers.near
-local neq = global_helpers.neq
local ok = global_helpers.ok
-local read_file = global_helpers.read_file
local sleep = global_helpers.sleep
local table_contains = global_helpers.table_contains
local table_flatten = global_helpers.table_flatten
@@ -32,7 +24,7 @@ local start_dir = lfs.currentdir()
local nvim_prog = (
os.getenv('NVIM_PROG')
or os.getenv('NVIM_PRG')
- or Paths.test_build_dir .. '/bin/nvim'
+ or global_helpers.test_build_dir .. '/bin/nvim'
)
-- Default settings for the test session.
local nvim_set = 'set shortmess+=I background=light noswapfile noautoindent'
@@ -802,33 +794,25 @@ local module = {
curtabmeths = curtabmeths,
curwin = curwin,
curwinmeths = curwinmeths,
- dedent = dedent,
- eq = eq,
eval = nvim_eval,
exc_exec = exc_exec,
expect = expect,
expect_any = expect_any,
- expect_err = expect_err,
expect_msg_seq = expect_msg_seq,
expect_twostreams = expect_twostreams,
feed = feed,
feed_command = feed_command,
- filter = filter,
funcs = funcs,
get_pathsep = get_pathsep,
get_session = get_session,
insert = insert,
iswin = iswin,
- map = map,
- matches = matches,
merge_args = merge_args,
meth_pcall = meth_pcall,
meths = meths,
missing_provider = missing_provider,
mkdir = lfs.mkdir,
load_adjust = load_adjust,
- near = near,
- neq = neq,
new_pipename = new_pipename,
next_msg = next_msg,
nvim = nvim,
@@ -838,13 +822,11 @@ local module = {
nvim_prog = nvim_prog,
nvim_prog_abs = nvim_prog_abs,
nvim_set = nvim_set,
- ok = ok,
os_name = os_name,
pathroot = pathroot,
pending_win32 = pending_win32,
prepend_argv = prepend_argv,
rawfeed = rawfeed,
- read_file = read_file,
redir_exec = redir_exec,
request = request,
retry = retry,
@@ -854,20 +836,17 @@ local module = {
set_session = set_session,
set_shell_powershell = set_shell_powershell,
skip_fragile = skip_fragile,
- sleep = sleep,
source = source,
spawn = spawn,
stop = stop,
- table_flatten = table_flatten,
tabmeths = tabmeths,
tabpage = tabpage,
- tmpname = tmpname,
uimeths = uimeths,
wait = wait,
window = window,
winmeths = winmeths,
- write_file = write_file,
}
+module = global_helpers.map_extend('error', module, global_helpers)
return function(after_each)
if after_each then
diff --git a/test/helpers.lua b/test/helpers.lua
index 89cf13f917..966b7b408f 100644
--- a/test/helpers.lua
+++ b/test/helpers.lua
@@ -3,6 +3,7 @@ local assert = require('luassert')
local luv = require('luv')
local lfs = require('lfs')
local relpath = require('pl.path').relpath
+local Paths = require('test.config.paths')
local quote_me = '[^.%w%+%-%@%_%/]' -- complement (needn't quote)
local function shell_quote(str)
@@ -420,6 +421,7 @@ local function updated(d, d2)
return d
end
+-- Concat list-like tables.
local function concat_tables(...)
local ret = {}
for i = 1, select('#', ...) do
@@ -433,6 +435,34 @@ local function concat_tables(...)
return ret
end
+-- Concat map-like tables.
+--
+-- behavior: Decides what to do if a key is found in more than one map:
+-- "error": raise an error
+-- "keep": skip
+-- "force": set the item again
+local function map_extend(behavior, ...)
+ if (behavior ~= 'error' and behavior ~= 'keep' and behavior ~= 'force') then
+ error('invalid "behavior": '..tostring(behavior))
+ end
+ local ret = {}
+ for i = 1, select('#', ...) do
+ local tbl = select(i, ...)
+ if tbl then
+ for k, v in pairs(tbl) do
+ if behavior ~= 'force' and ret[k] ~= nil then
+ if behavior == 'error' then
+ error('key found in more than one map: '..k)
+ end -- Else behavior is "keep".
+ else
+ ret[k] = v
+ end
+ end
+ end
+ end
+ return ret
+end
+
local function dedent(str, leave_indent)
-- find minimum common indent across lines
local indent = nil
@@ -771,6 +801,7 @@ local module = {
intchar2lua = intchar2lua,
isCI = isCI,
map = map,
+ map_extend = map_extend,
matches = matches,
mergedicts_copy = mergedicts_copy,
near = near,
@@ -792,5 +823,6 @@ local module = {
which = which,
write_file = write_file,
}
+module = map_extend('error', module, Paths)
return module
diff --git a/test/unit/helpers.lua b/test/unit/helpers.lua
index beb25f25db..c42eddf7f3 100644
--- a/test/unit/helpers.lua
+++ b/test/unit/helpers.lua
@@ -15,7 +15,6 @@ local dedent = global_helpers.dedent
local neq = global_helpers.neq
local map = global_helpers.map
local eq = global_helpers.eq
-local ok = global_helpers.ok
-- C constants.
local NULL = ffi.cast('void*', 0)
@@ -842,9 +841,6 @@ local module = {
cimport = cimport,
cppimport = cppimport,
internalize = internalize,
- ok = ok,
- eq = eq,
- neq = neq,
ffi = ffi,
lib = lib,
cstr = cstr,
@@ -869,6 +865,7 @@ local module = {
ptr2key = ptr2key,
debug_log = debug_log,
}
+module = global_helpers.map_extend('error', module, global_helpers)
return function()
return module
end