test: Add 'eval' functional helper

The eval helper transforms vimL expressions into lua tables, it's useful for
verifying function output.
This commit is contained in:
Thiago de Arruda 2014-10-01 09:31:57 -03:00
parent 549fc9548d
commit f6a008a182
2 changed files with 33 additions and 3 deletions

View File

@ -4,7 +4,7 @@ import os
import sys
import textwrap
from lupa import LuaRuntime
from lupa import LuaRuntime, as_attrgetter
from neovim import Nvim, spawn_session
@ -33,6 +33,14 @@ function(d)
end
''')
def to_table(obj):
if type(obj) in [tuple, list]:
return list_to_table(list(to_table(e) for e in obj))
if type(obj) is dict:
return dict_to_table(as_attrgetter(
dict((k, to_table(v)) for k, v in obj.items())))
return obj
nvim_prog = os.environ.get('NVIM_PROG', 'build/bin/nvim')
nvim_argv = [nvim_prog, '-u', 'NONE', '--embed']
@ -51,6 +59,9 @@ nvim = Nvim.from_session(session)
def nvim_command(cmd):
nvim.command(cmd)
def nvim_eval(expr):
return to_table(nvim.eval(expr))
def nvim_feed(input, mode=''):
nvim.feedkeys(input)
@ -63,6 +74,7 @@ def nvim_replace_termcodes(input, *opts):
expose = [
nvim_command,
nvim_eval,
nvim_feed,
nvim_replace_termcodes,
buffer_slice,

View File

@ -31,9 +31,24 @@ local function execute(...)
end
end
local function eval(expr)
local status, result = pcall(function() return nvim_eval(expr) end)
if not status then
error('Failed to evaluate expression "' .. expr .. '"')
end
return result
end
local function eq(expected, actual)
return assert.are.same(expected, actual)
end
local function neq(expected, actual)
return assert.are_not.same(expected, actual)
end
local function expect(contents, first, last, buffer_index)
return assert.are.same(dedent(contents),
buffer_slice(first, last, buffer_idx))
return eq(dedent(contents), buffer_slice(first, last, buffer_idx))
end
rawfeed([[:function BeforeEachTest()
@ -80,5 +95,8 @@ return {
insert = insert,
feed = feed,
execute = execute,
eval = eval,
eq = eq,
neq = neq,
expect = expect
}