mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00
provider/perl: add basic tests
This commit is contained in:
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