Bug 18897: Use Module::Load::Conditional::can_load
authorMark Tompsett <mtompset@hotmail.com>
Fri, 1 Sep 2017 18:15:44 +0000 (14:15 -0400)
committerKatrin Fischer <katrin.fischer.83@web.de>
Fri, 6 Oct 2017 06:18:45 +0000 (08:18 +0200)
Rather than rely on eval(), Jonathan Druart recommended in
comment #6 to use Use Module::Load::Conditional::can_load.
This addresses that concern.

TEST PLAN
---------
$ git fetch
$ git checkout -b bug_18897 origin/master
$ git bz apply 18897
$ sudo apt-get remove libcatmandu-store-elasticsearch-perl
...
$ prove t/db_dependent/Koha_Elasticsearch_Indexer.t
-- Note that the message says the correct library is missing.
$ sudo apt-get install libcatmandu-store-elasticsearch-perl
-- Note it runs as expected.
run the koha qa test tools

Signed-off-by: Lee Jamison <ldjamison@marywood.edu>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 088e332760b55c6f7a44097d8ab5d84003d8f0e0)
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

t/db_dependent/Koha_Elasticsearch_Indexer.t

index 474a443..4dd9154 100644 (file)
@@ -17,6 +17,7 @@
 
 use Modern::Perl;
 
+use Module::Load::Conditional qw[can_load check_install requires];
 use Test::More;
 use Test::MockModule;
 use t::lib::Mocks;
@@ -27,10 +28,11 @@ use Koha::Database;
 
 my $schema = Koha::Database->schema();
 
-eval { require Koha::SearchEngine::Elasticsearch::Indexer; };
-if ( $@ ) {
+if ( ! can_load(
+    modules => { 'Koha::SearchEngine::Elasticsearch::Indexer' => undef, } )
+) {
     my $missing_module;
-    if ( $@ =~ /Can\'t locate (.*?) / ) {
+    if ( $Module::Load::Conditional::ERROR =~ /Can\'t locate (.*?) / ) {
         $missing_module = $1;
     }
     my $es_dep_msg = "Required module $missing_module is not installed";