mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00

Problem: 1. CI logs have too many (40+) logs mentioning SIGHUP: ``` WRN 2022-06-18T16:05:47.075 T3568.22499.0/c deadly_signal:177: got signal 1 (SIGHUP) WRN 2022-06-18T16:05:47.273 T3569.91095.0/c deadly_signal:177: got signal 1 (SIGHUP) WRN 2022-06-18T16:05:47.651 T3570.59545.0/c deadly_signal:177: got signal 1 (SIGHUP) ``` 2. TS parser test still sometimes fails on BSD CI. 3. remote_spec test fails too often. Solution: 1. Log deadly signals at INFO level. It hasn't been helpful in CI, and for local troubleshooting it's reasonable to adjust the loglevel as needed. 2. Adjust the TS parser test again. ref #18911 3. Skip the remote_spec test. The `--remote` feature was merged before it was fully formed and needs to be revisited.
143 lines
4.4 KiB
Lua
143 lines
4.4 KiB
Lua
local helpers = require('test.functional.helpers')(after_each)
|
|
|
|
local clear = helpers.clear
|
|
local command = helpers.command
|
|
local eq = helpers.eq
|
|
local expect = helpers.expect
|
|
local funcs = helpers.funcs
|
|
local insert = helpers.insert
|
|
local meths = helpers.meths
|
|
local new_argv = helpers.new_argv
|
|
local neq = helpers.neq
|
|
local set_session = helpers.set_session
|
|
local spawn = helpers.spawn
|
|
local tmpname = helpers.tmpname
|
|
local write_file = helpers.write_file
|
|
|
|
describe('Remote', function()
|
|
local fname, other_fname
|
|
local contents = 'The call is coming from outside the process'
|
|
local other_contents = "A second file's contents"
|
|
|
|
before_each(function()
|
|
fname = tmpname() .. ' with spaces in the filename'
|
|
other_fname = tmpname()
|
|
write_file(fname, contents)
|
|
write_file(other_fname, other_contents)
|
|
end)
|
|
|
|
describe('connect to server and', function()
|
|
local server
|
|
before_each(function()
|
|
server = spawn(new_argv(), true)
|
|
set_session(server)
|
|
end)
|
|
|
|
after_each(function()
|
|
server:close()
|
|
end)
|
|
|
|
local function run_remote(...)
|
|
set_session(server)
|
|
local addr = funcs.serverlist()[1]
|
|
local client_argv = new_argv({args={'--server', addr, ...}})
|
|
|
|
-- Create an nvim instance just to run the remote-invoking nvim. We want
|
|
-- to wait for the remote instance to exit and calling jobwait blocks
|
|
-- the event loop. If the server event loop is blocked, it can't process
|
|
-- our incoming --remote calls.
|
|
local client_starter = spawn(new_argv(), false, nil, true)
|
|
set_session(client_starter)
|
|
local client_job_id = funcs.jobstart(client_argv)
|
|
eq({ 0 }, funcs.jobwait({client_job_id}))
|
|
client_starter:close()
|
|
set_session(server)
|
|
end
|
|
|
|
it('edit a single file', function()
|
|
run_remote('--remote', fname)
|
|
expect(contents)
|
|
eq(2, #funcs.getbufinfo())
|
|
end)
|
|
|
|
it('tab edit a single file with a non-changed buffer', function()
|
|
run_remote('--remote-tab', fname)
|
|
expect(contents)
|
|
eq(1, #funcs.gettabinfo())
|
|
end)
|
|
|
|
it('tab edit a single file with a changed buffer', function()
|
|
insert('hello')
|
|
run_remote('--remote-tab', fname)
|
|
expect(contents)
|
|
eq(2, #funcs.gettabinfo())
|
|
end)
|
|
|
|
it('edit multiple files', function()
|
|
run_remote('--remote', fname, other_fname)
|
|
expect(contents)
|
|
command('next')
|
|
expect(other_contents)
|
|
eq(3, #funcs.getbufinfo())
|
|
end)
|
|
|
|
it('send keys', function()
|
|
run_remote('--remote-send', ':edit '..fname..'<CR><C-W>v')
|
|
expect(contents)
|
|
eq(2, #funcs.getwininfo())
|
|
-- Only a single buffer as we're using edit and not drop like --remote does
|
|
eq(1, #funcs.getbufinfo())
|
|
end)
|
|
|
|
it('evaluate expressions', function()
|
|
run_remote('--remote-expr', 'setline(1, "Yo")')
|
|
expect('Yo')
|
|
end)
|
|
end)
|
|
|
|
it('creates server if not found', function()
|
|
clear('--remote', fname)
|
|
expect(contents)
|
|
eq(1, #funcs.getbufinfo())
|
|
-- Since we didn't pass silent, we should get a complaint
|
|
neq(nil, string.find(meths.exec('messages', true), 'E247'))
|
|
end)
|
|
|
|
it('creates server if not found with tabs', function()
|
|
clear('--remote-tab-silent', fname, other_fname)
|
|
expect(contents)
|
|
eq(2, #funcs.gettabinfo())
|
|
eq(2, #funcs.getbufinfo())
|
|
-- We passed silent, so no message should be issued about the server not being found
|
|
eq(nil, string.find(meths.exec('messages', true), 'E247'))
|
|
end)
|
|
|
|
pending('exits with error on', function()
|
|
local function run_and_check_exit_code(...)
|
|
local bogus_argv = new_argv(...)
|
|
|
|
-- Create an nvim instance just to run the remote-invoking nvim. We want
|
|
-- to wait for the remote instance to exit and calling jobwait blocks
|
|
-- the event loop. If the server event loop is blocked, it can't process
|
|
-- our incoming --remote calls.
|
|
clear()
|
|
local bogus_job_id = funcs.jobstart(bogus_argv)
|
|
eq({2}, funcs.jobwait({bogus_job_id}))
|
|
end
|
|
it('bogus subcommand', function()
|
|
run_and_check_exit_code('--remote-bogus')
|
|
end)
|
|
|
|
it('send without server', function()
|
|
run_and_check_exit_code('--remote-send', 'i')
|
|
end)
|
|
|
|
it('expr without server', function()
|
|
run_and_check_exit_code('--remote-expr', 'setline(1, "Yo")')
|
|
end)
|
|
it('wait subcommand', function()
|
|
run_and_check_exit_code('--remote-wait', fname)
|
|
end)
|
|
end)
|
|
end)
|