mirror of
https://github.com/neovim/neovim.git
synced 2026-05-04 21:15:09 +00:00
ci: nodejs client acceptance-test #7706
ci: install nodejs 8 in Appveyor, Travis provider: check node version for debug support Resolve https://github.com/neovim/neovim/pull/7577#issuecomment-350590592 for Unix. provider: test if nodejs in ci supports --inspect-brk nodejs host for neovim requires nodejs 6+ to work properly. nodejs 6.12+ or 7.6+ is required for debug support via `node --inspect-brk`. provider: run cli.js of nodejs host directly npm shims are useless because the user cannot set node to debug mode via --inspect-brk. This is problematic on Windows which use batchfiles and shell scripts to compensate for not supporting shebang. The patch uses `npm root -g` to get the absolute path of the global npm modules. If that fails, then the user did not install neovim npm package globally. Use that absolute path to find `neovim/bin/cli.js`, which is what the npm shim actually runs with node. glob() is for a simple file check in case bin/ is removed because the npm shims are ignored now.
This commit is contained in:
committed by
Justin M. Keyes
parent
bfb21f3e01
commit
a1adfdc7d5
70
test/functional/provider/nodejs_spec.lua
Normal file
70
test/functional/provider/nodejs_spec.lua
Normal file
@@ -0,0 +1,70 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local eq, clear = helpers.eq, helpers.clear
|
||||
local missing_provider = helpers.missing_provider
|
||||
local command = helpers.command
|
||||
local write_file = helpers.write_file
|
||||
local eval = helpers.eval
|
||||
local sleep = helpers.sleep
|
||||
local funcs = helpers.funcs
|
||||
local retry = helpers.retry
|
||||
|
||||
do
|
||||
clear()
|
||||
if missing_provider('node') then
|
||||
pending(
|
||||
"Cannot find the neovim nodejs host. Try :checkhealth",
|
||||
function() end)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
before_each(function()
|
||||
clear()
|
||||
end)
|
||||
|
||||
describe('nodejs', function()
|
||||
it('can inspect', function()
|
||||
eq(1, funcs['provider#node#can_inspect']())
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('nodejs host', function()
|
||||
teardown(function ()
|
||||
os.remove('Xtest-nodejs-hello.js')
|
||||
os.remove('Xtest-nodejs-hello-plugin.js')
|
||||
end)
|
||||
|
||||
it('works', function()
|
||||
local fname = 'Xtest-nodejs-hello.js'
|
||||
write_file(fname, [[
|
||||
const socket = process.env.NVIM_LISTEN_ADDRESS;
|
||||
const neovim = require('neovim');
|
||||
const nvim = neovim.attach({socket: socket});
|
||||
nvim.command('let g:job_out = "hello"');
|
||||
nvim.command('call jobstop(g:job_id)');
|
||||
]])
|
||||
command('let g:job_id = jobstart(["node", "'..fname..'"])')
|
||||
retry(nil, 1000, function() eq('hello', eval('g:job_out')) end)
|
||||
end)
|
||||
it('plugin works', function()
|
||||
local fname = 'Xtest-nodejs-hello-plugin.js'
|
||||
write_file(fname, [[
|
||||
const socket = process.env.NVIM_LISTEN_ADDRESS;
|
||||
const neovim = require('neovim');
|
||||
const nvim = neovim.attach({socket: socket});
|
||||
|
||||
class TestPlugin {
|
||||
hello() {
|
||||
this.nvim.command('let g:job_out = "hello-plugin"')
|
||||
}
|
||||
}
|
||||
|
||||
const PluginClass = neovim.Plugin(TestPlugin);
|
||||
const plugin = new PluginClass(nvim);
|
||||
plugin.hello();
|
||||
nvim.command('call jobstop(g:job_id)');
|
||||
]])
|
||||
command('let g:job_id = jobstart(["node", "'..fname..'"])')
|
||||
retry(nil, 1000, function() eq('hello-plugin', eval('g:job_out')) end)
|
||||
end)
|
||||
end)
|
||||
Reference in New Issue
Block a user