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;