mirror of
https://github.com/neovim/neovim.git
synced 2025-09-09 12:58:16 +00:00
provider/perl: add basic tests
This commit is contained in:
@@ -768,7 +768,7 @@ function module.new_pipename()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function module.missing_provider(provider)
|
function module.missing_provider(provider)
|
||||||
if provider == 'ruby' or provider == 'node' then
|
if provider == 'ruby' or provider == 'node' or provider == 'perl' then
|
||||||
local prog = module.funcs['provider#' .. provider .. '#Detect']()
|
local prog = module.funcs['provider#' .. provider .. '#Detect']()
|
||||||
return prog == '' and (provider .. ' not detected') or false
|
return prog == '' and (provider .. ' not detected') or false
|
||||||
elseif provider == 'python' or provider == 'python3' then
|
elseif provider == 'python' or provider == 'python3' then
|
||||||
|
75
test/functional/provider/perl_spec.lua
Normal file
75
test/functional/provider/perl_spec.lua
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
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 retry = helpers.retry
|
||||||
|
|
||||||
|
do
|
||||||
|
clear()
|
||||||
|
local reason = missing_provider('perl')
|
||||||
|
if reason then
|
||||||
|
pending(string.format("Missing perl host, or perl version is too old (%s)", reason), function() end)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
before_each(function()
|
||||||
|
clear()
|
||||||
|
end)
|
||||||
|
|
||||||
|
describe('perl host', function()
|
||||||
|
teardown(function ()
|
||||||
|
os.remove('Xtest-perl-hello.pl')
|
||||||
|
os.remove('Xtest-perl-hello-plugin.pl')
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('works', function()
|
||||||
|
local fname = 'Xtest-perl-hello.pl'
|
||||||
|
write_file(fname, [[
|
||||||
|
package main;
|
||||||
|
use v5.22.1;
|
||||||
|
use Neovim::Ext;
|
||||||
|
use Neovim::Ext::MsgPack::RPC;
|
||||||
|
|
||||||
|
my $session = Neovim::Ext::MsgPack::RPC::socket_session($ENV{NVIM_LISTEN_ADDRESS});
|
||||||
|
my $nvim = Neovim::Ext::from_session($session);
|
||||||
|
$nvim->command('let g:job_out = "hello"');
|
||||||
|
1;
|
||||||
|
]])
|
||||||
|
command('let g:job_id = jobstart(["perl", "'..fname..'"])')
|
||||||
|
retry(nil, 3000, function() eq('hello', eval('g:job_out')) end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('plugin works', function()
|
||||||
|
local fname = 'Xtest-perl-hello-plugin.pl'
|
||||||
|
write_file(fname, [[
|
||||||
|
package TestPlugin;
|
||||||
|
use parent qw(Neovim::Ext::Plugin);
|
||||||
|
|
||||||
|
__PACKAGE__->register;
|
||||||
|
|
||||||
|
@{TestPlugin::commands} = ();
|
||||||
|
@{TestPlugin::specs} = ();
|
||||||
|
sub test_command :nvim_command('TestCommand')
|
||||||
|
{
|
||||||
|
my ($this) = @_;
|
||||||
|
$this->nvim->command('let g:job_out = "hello-plugin"');
|
||||||
|
}
|
||||||
|
|
||||||
|
package main;
|
||||||
|
use v5.22.1;
|
||||||
|
use Neovim::Ext;
|
||||||
|
use Neovim::Ext::MsgPack::RPC;
|
||||||
|
|
||||||
|
my $session = Neovim::Ext::MsgPack::RPC::socket_session($ENV{NVIM_LISTEN_ADDRESS});
|
||||||
|
my $nvim = Neovim::Ext::from_session($session);
|
||||||
|
my $plugin = TestPlugin->new($nvim);
|
||||||
|
$plugin->test_command();
|
||||||
|
1;
|
||||||
|
]])
|
||||||
|
command('let g:job_id = jobstart(["perl", "'..fname..'"])')
|
||||||
|
retry(nil, 3000, function() eq('hello-plugin', eval('g:job_out')) end)
|
||||||
|
end)
|
||||||
|
end)
|
Reference in New Issue
Block a user