1
mirror of https://github.com/neovim/neovim.git synced 2025-01-01 17:23:36 -07:00

Merge 'CI/OpenBSD: functional tests'

This commit is contained in:
Justin M. Keyes 2019-09-01 22:56:41 -07:00 committed by GitHub
commit 099445cc07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 64 additions and 39 deletions

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -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 $ ");

View File

@ -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

View File

@ -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 '}

View File

@ -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")

View File

@ -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=[[

View File

@ -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([[
|

View File

@ -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.

View File

@ -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")

View File

@ -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