aboutsummaryrefslogtreecommitdiff
path: root/test/functional/provider/perl_spec.lua
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2020-08-08 08:57:35 -0400
committerJames McCoy <jamessan@jamessan.com>2020-08-08 08:57:35 -0400
commit840c12c10741d8f70e1787534fb6ea6d2b70edee (patch)
treef89ad27acbbf0b36db7ac08eeae0b8362da1fabb /test/functional/provider/perl_spec.lua
parente813ec79c201c85c5af3b10c051ae92ab5cb8606 (diff)
parentf26df8bb66158baacb79c79822babaf137607cd6 (diff)
downloadrneovim-840c12c10741d8f70e1787534fb6ea6d2b70edee.tar.gz
rneovim-840c12c10741d8f70e1787534fb6ea6d2b70edee.tar.bz2
rneovim-840c12c10741d8f70e1787534fb6ea6d2b70edee.zip
Merge remote-tracking branch 'upstream/master' into libcallnr
Diffstat (limited to 'test/functional/provider/perl_spec.lua')
-rw-r--r--test/functional/provider/perl_spec.lua80
1 files changed, 80 insertions, 0 deletions
diff --git a/test/functional/provider/perl_spec.lua b/test/functional/provider/perl_spec.lua
new file mode 100644
index 0000000000..7b446e4ab3
--- /dev/null
+++ b/test/functional/provider/perl_spec.lua
@@ -0,0 +1,80 @@
+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()
+ if helpers.pending_win32(pending) then return end
+ 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 strict;
+ use warnings;
+ 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 strict;
+ use warnings;
+ 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 strict;
+ use warnings;
+ 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)