mirror of
https://github.com/neovim/neovim.git
synced 2025-01-01 17:23:36 -07:00
Merge #10804 'CI/OpenBSD: functional tests'
This commit is contained in:
commit
099445cc07
.builds
test
@ -28,11 +28,14 @@ tasks:
|
||||
cd ..
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G Ninja ..
|
||||
cmake -G Ninja -DMIN_LOG_LEVEL=3 ..
|
||||
cmake --build . --config Debug
|
||||
./bin/nvim --version
|
||||
- test: |
|
||||
export LC_CTYPE=en_US.UTF-8
|
||||
cd neovim
|
||||
# functional tests
|
||||
cd neovim/build
|
||||
# cmake --build . --config Debug --target functionaltest
|
||||
# oldtests
|
||||
gmake -C src/nvim/testdir NVIM_PRG=`pwd`/build/bin/nvim
|
||||
cd ..
|
||||
gmake oldtest
|
||||
|
@ -139,8 +139,8 @@ describe('channels', function()
|
||||
|
||||
command("call chansend(id, 'incomplet\004')")
|
||||
|
||||
local is_freebsd = (string.lower(uname()) == 'freebsd')
|
||||
local bsdlike = is_freebsd or (os_name() == "osx")
|
||||
local is_bsd = not not string.find(uname(), 'bsd')
|
||||
local bsdlike = is_bsd or (os_name() == "osx")
|
||||
local extra = bsdlike and "^D\008\008" or ""
|
||||
expect_twoline(id, "stdout",
|
||||
"incomplet"..extra, "[1, ['incomplet'], 'stdin']", true)
|
||||
|
@ -429,7 +429,7 @@ describe('jobs', function()
|
||||
if has('win32')
|
||||
let cmd = 'for /L %I in (1,1,5) do @(echo %I& ping -n 2 127.0.0.1 > nul)'
|
||||
else
|
||||
let cmd = ['sh', '-c', 'for i in $(seq 1 5); do echo $i; sleep 0.1; done']
|
||||
let cmd = ['sh', '-c', 'for i in 1 2 3 4 5; do echo $i; sleep 0.1; done']
|
||||
endif
|
||||
let g:id = jobstart(cmd, d)
|
||||
sleep 1500m
|
||||
@ -472,7 +472,7 @@ describe('jobs', function()
|
||||
if has('win32')
|
||||
let cmd = 'for /L %I in (1,1,5) do @(echo %I& ping -n 2 127.0.0.1 > nul)'
|
||||
else
|
||||
let cmd = ['sh', '-c', 'for i in $(seq 1 5); do echo $i; sleep 0.1; done']
|
||||
let cmd = ['sh', '-c', 'for i in 1 2 3 4 5; do echo $i; sleep 0.1; done']
|
||||
endif
|
||||
let g:id = jobstart(cmd, d)
|
||||
sleep 1500m
|
||||
|
@ -192,9 +192,10 @@ describe('timers', function()
|
||||
]])
|
||||
command("call timer_start(2, 'MyHandler', {'repeat': 3})")
|
||||
command("call timer_start(4, 'MyHandler2', {'repeat': 2})")
|
||||
run(nil, nil, nil, load_adjust(30))
|
||||
eq(3,eval("g:val"))
|
||||
eq(2,eval("g:val2"))
|
||||
retry(nil, nil, function()
|
||||
eq(3, eval("g:val"))
|
||||
eq(2, eval("g:val2"))
|
||||
end)
|
||||
end)
|
||||
|
||||
it('do not crash when processing events in the handler', function()
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
static void flush_wait(void)
|
||||
{
|
||||
fflush(stdout);
|
||||
fflush(NULL);
|
||||
usleep(10*1000); // Wait 10 ms.
|
||||
}
|
||||
|
||||
@ -78,10 +78,10 @@ int main(int argc, char **argv)
|
||||
}
|
||||
for (int i = 0; i < count; i++) {
|
||||
printf("%d: %s\n", i, argv[3]);
|
||||
fflush(stdout);
|
||||
if (i % 100 == 0) {
|
||||
usleep(1000); // Wait 1 ms (simulate typical output).
|
||||
}
|
||||
fflush(NULL);
|
||||
}
|
||||
} else if (strcmp(argv[1], "UTF-8") == 0) {
|
||||
// test split-up UTF-8 sequence
|
||||
@ -126,7 +126,7 @@ int main(int argc, char **argv)
|
||||
fprintf(stderr, "Unknown first argument: %s\n", argv[1]);
|
||||
return 3;
|
||||
}
|
||||
fflush(stdout);
|
||||
fflush(NULL);
|
||||
return 0;
|
||||
} else if (argc == 1) {
|
||||
fprintf(stderr, "ready $ ");
|
||||
|
@ -48,7 +48,7 @@ if module.nvim_dir == module.nvim_prog then
|
||||
end
|
||||
|
||||
local tmpname = global_helpers.tmpname
|
||||
local uname = global_helpers.uname
|
||||
local iswin = global_helpers.iswin
|
||||
local prepend_argv
|
||||
|
||||
if os.getenv('VALGRIND') then
|
||||
@ -287,10 +287,6 @@ module.os_name = (function()
|
||||
end)
|
||||
end)()
|
||||
|
||||
function module.iswin()
|
||||
return package.config:sub(1,1) == '\\'
|
||||
end
|
||||
|
||||
-- Executes a VimL function.
|
||||
-- Fails on VimL error, but does not update v:errmsg.
|
||||
function module.call(name, ...)
|
||||
@ -304,7 +300,7 @@ local function nvim_feed(input)
|
||||
local written = module.request('nvim_input', input)
|
||||
if written == nil then
|
||||
module.assert_alive()
|
||||
error('nvim_input returned nil (Nvim process terminated?)')
|
||||
error('crash? (nvim_input returned nil)')
|
||||
end
|
||||
input = input:sub(written + 1)
|
||||
end
|
||||
@ -592,7 +588,7 @@ end
|
||||
|
||||
-- Checks that the Nvim session did not terminate.
|
||||
function module.assert_alive()
|
||||
eq(2, module.eval('1+1'))
|
||||
assert(2 == module.eval('1+1'), 'crash? request failed')
|
||||
end
|
||||
|
||||
local function do_rmdir(path)
|
||||
@ -672,7 +668,7 @@ end
|
||||
-- Helper to skip tests. Returns true in Windows systems.
|
||||
-- pending_fn is pending() from busted
|
||||
function module.pending_win32(pending_fn)
|
||||
if uname() == 'Windows' then
|
||||
if iswin() then
|
||||
if pending_fn ~= nil then
|
||||
pending_fn('FIXME: Windows', function() end)
|
||||
end
|
||||
@ -734,12 +730,12 @@ function module.redir_exec(cmd)
|
||||
end
|
||||
|
||||
function module.get_pathsep()
|
||||
return module.iswin() and '\\' or '/'
|
||||
return iswin() and '\\' or '/'
|
||||
end
|
||||
|
||||
function module.pathroot()
|
||||
local pathsep = package.config:sub(1,1)
|
||||
return module.iswin() and (module.nvim_dir:sub(1,2)..pathsep) or '/'
|
||||
return iswin() and (module.nvim_dir:sub(1,2)..pathsep) or '/'
|
||||
end
|
||||
|
||||
-- Returns a valid, platform-independent $NVIM_LISTEN_ADDRESS.
|
||||
@ -765,7 +761,7 @@ function module.missing_provider(provider)
|
||||
end
|
||||
|
||||
function module.alter_slashes(obj)
|
||||
if not module.iswin() then
|
||||
if not iswin() then
|
||||
return obj
|
||||
end
|
||||
if type(obj) == 'string' then
|
||||
|
@ -406,7 +406,7 @@ describe("'scrollback' option", function()
|
||||
if iswin() then
|
||||
feed_data('for /L %I in (1,1,30) do @(echo line%I)\r')
|
||||
else
|
||||
feed_data('for i in $(seq 1 30); do echo "line$i"; done\n')
|
||||
feed_data('awk "BEGIN{for(n=1;n<=30;n++) print \\\"line\\\" n}"\n')
|
||||
end
|
||||
screen:expect{any='line30 '}
|
||||
retry(nil, nil, function() expect_lines(7) end)
|
||||
@ -431,7 +431,7 @@ describe("'scrollback' option", function()
|
||||
if iswin() then
|
||||
feed_data('for /L %I in (1,1,30) do @(echo line%I)\r')
|
||||
else
|
||||
feed_data('for i in $(seq 1 30); do echo "line$i"; done\n')
|
||||
feed_data('awk "BEGIN{for(n=1;n<=30;n++) print \\\"line\\\" n}"\n')
|
||||
end
|
||||
|
||||
screen:expect{any='line30 '}
|
||||
@ -448,7 +448,7 @@ describe("'scrollback' option", function()
|
||||
if iswin() then
|
||||
feed_data('for /L %I in (1,1,40) do @(echo line%I)\r')
|
||||
else
|
||||
feed_data('for i in $(seq 1 40); do echo "line$i"; done\n')
|
||||
feed_data('awk "BEGIN{for(n=1;n<=40;n++) print \\\"line\\\" n}"\n')
|
||||
end
|
||||
|
||||
screen:expect{any='line40 '}
|
||||
|
@ -902,7 +902,7 @@ end)
|
||||
-- does not initialize the TUI.
|
||||
describe("TUI 't_Co' (terminal colors)", function()
|
||||
local screen
|
||||
local is_freebsd = (string.lower(uname()) == 'freebsd')
|
||||
local is_freebsd = (uname() == 'freebsd')
|
||||
|
||||
local function assert_term_colors(term, colorterm, maxcolors)
|
||||
helpers.clear({env={TERM=term}, args={}})
|
||||
@ -1176,8 +1176,8 @@ end)
|
||||
-- does not initialize the TUI.
|
||||
describe("TUI 'term' option", function()
|
||||
local screen
|
||||
local is_bsd = not not string.find(string.lower(uname()), 'bsd')
|
||||
local is_macos = not not string.find(string.lower(uname()), 'darwin')
|
||||
local is_bsd = not not string.find(uname(), 'bsd')
|
||||
local is_macos = not not string.find(uname(), 'darwin')
|
||||
|
||||
local function assert_term(term_envvar, term_expected)
|
||||
clear()
|
||||
@ -1203,7 +1203,9 @@ describe("TUI 'term' option", function()
|
||||
end)
|
||||
|
||||
it('gets system-provided term if $TERM is valid', function()
|
||||
if is_bsd then -- BSD lacks terminfo, builtin is always used.
|
||||
if uname() == "openbsd" then
|
||||
assert_term("xterm", "xterm")
|
||||
elseif is_bsd then -- BSD lacks terminfo, builtin is always used.
|
||||
assert_term("xterm", "builtin_xterm")
|
||||
elseif is_macos then
|
||||
local status, _ = pcall(assert_term, "xterm", "xterm")
|
||||
|
@ -828,6 +828,10 @@ describe('cmdline redraw', function()
|
||||
end)
|
||||
|
||||
it('with <Cmd>', function()
|
||||
if 'openbsd' == helpers.uname() then
|
||||
pending('FIXME #10804', function() end)
|
||||
return
|
||||
end
|
||||
command('cmap a <Cmd>call sin(0)<CR>') -- no-op
|
||||
feed(':012345678901234567890123456789')
|
||||
screen:expect{grid=[[
|
||||
|
@ -49,6 +49,10 @@ local function test_embed(ext_linegrid)
|
||||
end)
|
||||
|
||||
it("doesn't erase output when setting color scheme", function()
|
||||
if 'openbsd' == helpers.uname() then
|
||||
pending('FIXME #10804', function() end)
|
||||
return
|
||||
end
|
||||
startup('--cmd', 'echoerr "foo"', '--cmd', 'color default', '--cmd', 'echoerr "bar"')
|
||||
screen:expect([[
|
||||
|
|
||||
|
@ -50,6 +50,10 @@ describe("shell command :!", function()
|
||||
end)
|
||||
|
||||
it("throttles shell-command output greater than ~10KB", function()
|
||||
if 'openbsd' == helpers.uname() then
|
||||
pending('FIXME #10804', function() end)
|
||||
return
|
||||
end
|
||||
child_session.feed_data(":!"..nvim_dir.."/shell-test REP 30001 foo\n")
|
||||
|
||||
-- If we observe any line starting with a dot, then throttling occurred.
|
||||
|
@ -615,7 +615,12 @@ function Screen:_redraw(updates)
|
||||
local handler_name = '_handle_'..method
|
||||
local handler = self[handler_name]
|
||||
if handler ~= nil then
|
||||
handler(self, unpack(update[i]))
|
||||
local status, res = pcall(handler, self, unpack(update[i]))
|
||||
if not status then
|
||||
error(handler_name..' failed'
|
||||
..'\n payload: '..inspect(update)
|
||||
..'\n error: '..tostring(res))
|
||||
end
|
||||
else
|
||||
assert(self._on_event,
|
||||
"Add Screen:"..handler_name.." or call Screen:set_on_event_handler")
|
||||
|
@ -158,7 +158,11 @@ function module.check_logs()
|
||||
table.concat(runtime_errors, ', ')))
|
||||
end
|
||||
|
||||
-- Tries to get platform name from $SYSTEM_NAME, uname; fallback is "Windows".
|
||||
function module.iswin()
|
||||
return package.config:sub(1,1) == '\\'
|
||||
end
|
||||
|
||||
-- Gets (lowercase) OS name from CMake, uname, or "win" if iswin().
|
||||
module.uname = (function()
|
||||
local platform = nil
|
||||
return (function()
|
||||
@ -166,17 +170,19 @@ module.uname = (function()
|
||||
return platform
|
||||
end
|
||||
|
||||
platform = os.getenv("SYSTEM_NAME")
|
||||
if platform then
|
||||
if os.getenv("SYSTEM_NAME") then -- From CMAKE_SYSTEM_NAME.
|
||||
platform = string.lower(os.getenv("SYSTEM_NAME"))
|
||||
return platform
|
||||
end
|
||||
|
||||
local status, f = pcall(module.popen_r, 'uname', '-s')
|
||||
if status then
|
||||
platform = f:read("*l")
|
||||
platform = string.lower(f:read("*l"))
|
||||
f:close()
|
||||
elseif module.iswin() then
|
||||
platform = 'windows'
|
||||
else
|
||||
platform = 'Windows'
|
||||
error('unknown platform')
|
||||
end
|
||||
return platform
|
||||
end)
|
||||
@ -203,11 +209,11 @@ module.tmpname = (function()
|
||||
return fname
|
||||
else
|
||||
local fname = os.tmpname()
|
||||
if module.uname() == 'Windows' and fname:sub(1, 2) == '\\s' then
|
||||
if module.uname() == 'windows' and fname:sub(1, 2) == '\\s' then
|
||||
-- In Windows tmpname() returns a filename starting with
|
||||
-- special sequence \s, prepend $TEMP path
|
||||
return tmpdir..fname
|
||||
elseif fname:match('^/tmp') and module.uname() == 'Darwin' then
|
||||
elseif fname:match('^/tmp') and module.uname() == 'darwin' then
|
||||
-- In OS X /tmp links to /private/tmp
|
||||
return '/private'..fname
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user