test: Extract code to spawn nvim into the "spawn" helper function

This is can be used for spawning nvim outside a test context. Also refactor
screen.lua to use this function when loading the color map(It is better because
the GDB/VALGRIND environment variables are ignored)
This commit is contained in:
Thiago de Arruda 2015-03-17 08:45:13 -03:00
parent 5874bc28ea
commit 47e90ea1c5
2 changed files with 29 additions and 12 deletions

View File

@ -162,15 +162,20 @@ local function rawfeed(...)
end
end
local function spawn(argv)
local loop = Loop.new()
local msgpack_stream = MsgpackStream.new(loop)
local async_session = AsyncSession.new(msgpack_stream)
local session = Session.new(async_session)
loop:spawn(argv)
return session
end
local function clear()
if session then
session:exit(0)
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)
session = spawn(nvim_argv)
end
local function insert(...)
@ -275,6 +280,7 @@ clear()
return {
clear = clear,
spawn = spawn,
dedent = dedent,
source = source,
rawfeed = rawfeed,
@ -292,6 +298,7 @@ return {
expect = expect,
ok = ok,
nvim = nvim,
nvim_prog = nvim_prog,
nvim_dir = nvim_dir,
buffer = buffer,
window = window,

View File

@ -123,15 +123,25 @@ if os.getenv('CI_TARGET') then
default_screen_timeout = default_screen_timeout * 3
end
local colors = request('vim_get_color_map')
do
local spawn, nvim_prog = helpers.spawn, helpers.nvim_prog
local session = spawn({nvim_prog, '-u', 'NONE', '-N', '--embed'})
local status, rv = session:request('vim_get_color_map')
if not status then
print('failed to get color map')
os.exit(1)
end
local colors = rv
local colornames = {}
for name, rgb in pairs(colors) do
-- we disregard the case that colornames might not be unique, as
-- this is just a helper to get any canonical name of a color
colornames[rgb] = name
end
session:exit(0)
Screen.colors = colors
Screen.colornames = colornames
end
function Screen.debug(command)
if not command then
@ -497,8 +507,8 @@ function pprint_attrs(attrs)
for f, v in pairs(attrs) do
local desc = tostring(v)
if f == "foreground" or f == "background" then
if colornames[v] ~= nil then
desc = "Screen.colors."..colornames[v]
if Screen.colornames[v] ~= nil then
desc = "Screen.colors."..Screen.colornames[v]
end
end
table.insert(items, f.." = "..desc)