test: forward $VIMRUNTIME in child nvim instances

This commit is contained in:
Gregory Anders 2023-12-07 09:28:46 -08:00
parent 5e78fd7784
commit 8957df4f22
6 changed files with 52 additions and 5 deletions

View File

@ -866,7 +866,11 @@ describe('user config init', function()
local screen = Screen.new(50, 8)
screen:attach()
funcs.termopen({nvim_prog})
funcs.termopen({nvim_prog}, {
env = {
VIMRUNTIME = os.getenv('VIMRUNTIME'),
},
})
screen:expect({ any = pesc('[i]gnore, (v)iew, (d)eny, (a)llow:') })
-- `i` to enter Terminal mode, `a` to allow
feed('ia')

View File

@ -127,7 +127,13 @@ end
local function setup_child_nvim(args, opts)
opts = opts or {}
local argv = { nvim_prog, unpack(args) }
return screen_setup(0, argv, opts.cols, opts.env)
local env = opts.env or {}
if not env.VIMRUNTIME then
env.VIMRUNTIME = os.getenv('VIMRUNTIME')
end
return screen_setup(0, argv, opts.cols, env)
end
return {

View File

@ -147,6 +147,10 @@ it(':terminal highlight has lower precedence than editor #9964', function()
'+hi Normal ctermfg=Blue ctermbg=Yellow',
'+norm! ichild nvim',
'+norm! oline 2',
}, {
env = {
VIMRUNTIME = os.getenv('VIMRUNTIME'),
},
})
screen:expect([[
{N_child:^child nvim }|

View File

@ -24,6 +24,7 @@ local funcs = helpers.funcs
local meths = helpers.meths
local is_ci = helpers.is_ci
local is_os = helpers.is_os
local is_arch = helpers.is_arch
local new_pipename = helpers.new_pipename
local spawn_argv = helpers.spawn_argv
local set_session = helpers.set_session
@ -1829,8 +1830,18 @@ describe('TUI', function()
[5] = {bold = true, reverse = true},
})
screen:attach()
funcs.termopen({
nvim_prog,
'--clean',
'--cmd', 'colorscheme vim',
'--cmd', 'set notermguicolors',
'--cmd', 'let start = reltime() | while v:true | if reltimefloat(reltime(start)) > 2 | break | endif | endwhile',
}, {
env = {
VIMRUNTIME = os.getenv('VIMRUNTIME'),
},
})
exec([[
call termopen([v:progpath, '--clean', '--cmd', 'set notermguicolors', '--cmd', 'colorscheme vim', '--cmd', 'let start = reltime() | while v:true | if reltimefloat(reltime(start)) > 2 | break | endif | endwhile'])
sleep 500m
vs new
]])
@ -1849,6 +1860,9 @@ describe('TUI', function()
end)
it('argv[0] can be overridden #23953', function()
if is_arch('aarch64') then
pending('execl does not work on aarch64')
end
if not exec_lua('return pcall(require, "ffi")') then
pending('missing LuaJIT FFI')
end
@ -1887,8 +1901,12 @@ describe('TUI', function()
finally(function()
os.remove('testF')
end)
local screen = thelpers.screen_setup(0, nvim_prog
..' -u NONE -i NONE --cmd \'set noswapfile noshowcmd noruler\' --cmd \'normal iabc\' > /dev/null 2>&1 && cat testF && rm testF')
local screen = thelpers.screen_setup(0,
string.format(
'VIMRUNTIME=%s %s -u NONE -i NONE --cmd \'set noswapfile noshowcmd noruler\' --cmd \'normal iabc\' > /dev/null 2>&1 && cat testF && rm testF',
os.getenv('VIMRUNTIME'),
nvim_prog
))
feed_data(':w testF\n:q\n')
screen:expect([[
:w testF |

View File

@ -376,6 +376,19 @@ function module.is_os(s)
)
end
function module.is_arch(s)
local machine = luv.os_uname().machine
if s == 'arm64' or s == 'aarch64' then
return machine == 'arm64' or machine == 'aarch64'
end
if s == 'x86' or s == 'x86_64' or s == 'amd64' then
return machine == 'x86_64'
end
return machine == s
end
local function tmpdir_get()
return os.getenv('TMPDIR') and os.getenv('TMPDIR') or os.getenv('TEMP')
end

View File

@ -7,6 +7,8 @@ function s:logger.on_exit(id, data, event)
call add(self.d_events, [a:event, ['']])
endfunction
let s:logger.env = #{VIMRUNTIME: $VIMRUNTIME}
" Replace non-printable chars by special sequence, or "<%x>".
let s:escaped_char = {"\n": '\n', "\r": '\r', "\t": '\t'}
function! s:escape_non_printable(char) abort