From 3280f80f7563d8bb026274f7521113bb26447bb9 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 5 Aug 2020 09:30:31 +0200 Subject: [PATCH] Bug 26138: Make Koha::Plugins->call return consistent value It must return an empty array in case the enable_plugins config flag is disabled Test plan: Turn the config off in koha-conf Start a search at the OPAC Without this patch you got: Can't use string ("0") as a HASH ref while "strict refs" in use at /home/vagrant/kohaclone/opac/opac-search.pl line 661 With this patch applied you see the search result --- Koha/Plugins.pm | 4 ++-- t/db_dependent/Koha/Plugins/Plugins.t | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Koha/Plugins.pm b/Koha/Plugins.pm index 41974e54ac..8d6957a298 100644 --- a/Koha/Plugins.pm +++ b/Koha/Plugins.pm @@ -63,9 +63,9 @@ Calls a plugin method for all enabled plugins sub call { my ($class, $method, @args) = @_; + my @responses; if (C4::Context->config('enable_plugins')) { my @plugins = $class->new({ enable_plugins => 1 })->GetPlugins({ method => $method }); - my @responses; @plugins = grep { $_->can($method) } @plugins; foreach my $plugin (@plugins) { my $response = eval { $plugin->$method(@args) }; @@ -77,8 +77,8 @@ sub call { push @responses, $response; } - return @responses; } + return @responses; } =head2 GetPlugins diff --git a/t/db_dependent/Koha/Plugins/Plugins.t b/t/db_dependent/Koha/Plugins/Plugins.t index 92b5c5c6b7..f49bd252fc 100755 --- a/t/db_dependent/Koha/Plugins/Plugins.t +++ b/t/db_dependent/Koha/Plugins/Plugins.t @@ -47,12 +47,13 @@ BEGIN { my $schema = Koha::Database->new->schema; subtest 'call() tests' => sub { - plan tests => 2; + plan tests => 3; $schema->storage->txn_begin; # Temporarily remove any installed plugins data Koha::Plugins::Methods->delete; + t::lib::Mocks::mock_config('enable_plugins', 1); my $plugins = Koha::Plugins->new({ enable_plugins => 1 }); my @plugins = $plugins->InstallPlugins; foreach my $plugin (@plugins) { @@ -70,6 +71,10 @@ subtest 'call() tests' => sub { $expected = [ { error => 0 } ]; is_deeply(\@responses, $expected, 'call() should return all responses from plugins'); + t::lib::Mocks::mock_config('enable_plugins', 0); + @responses = Koha::Plugins->call('check_password', { password => '1234' }); + is_deeply(\@responses, [], 'call() should return an empty array if plugins are disabled'); + $schema->storage->txn_rollback; }; @@ -352,5 +357,4 @@ subtest 'new() tests' => sub { is( ref($result), 'Koha::Plugins', 'calling new with enable_plugins makes it override the config' ); }; -$schema->storage->txn_rollback; Koha::Plugins::Methods->delete; -- 2.20.1