From: Mark Tompsett <mtomp...@hotmail.com>

Rather than add/remove regular expressions to skip modules (like bug 9054), 
encapsulate the decision logic into a separate function.

Currently there are three libraries which trigger halts:
Koha::NorwegianDB (which was already there)
Koha::ElasticSearch::Indexer
Koha::SearchEngine::Elasticsearch::Search

TEST PLAN
---------
1) prove t/00-load.t
   -- should barf horribly on Catmandu stuff
      if not: sudo apt-get remove libcatmandu-marc-perl
      then repeat step.
2) apply patch
3) prove t/00-load.t
   -- should not barf horribly
4) run koha qa test tools

NOTE: The four optional modules for Koha::NorwegianDB are
      listed in the PerlDependencies.pm, while there is
      no mention of Catmandu libraries at all there.
      This may be another bug which needs fixing.

TECH NOTES (for ideas of how to tinker around):
These three things should trigger the three module cases:
sudo apt-get remove libcatmandu-marc-perl
sudo apt-get remove libcatmandu-store-elasticsearch-perl
sudo apt-get remove libconvert-basen-perl

You probably had koha-perldeps installed before, so the following wil mostly 
fix:
sudo apt-get install koha-perldeps libcatmandu-marc-perl

And in case you didn't have elastic search stuff installed:
echo deb http://packages.elastic.co/elasticsearch/1.7/debian stable main | sudo 
tee /etc/apt/sources.list.d/elasticsearch.list
wget -O- https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get update

cd ~
wget http://debian.koha-community.org/koha/otherthings/elasticsearch_deps.tar.gz
tar xvf elasticsearch_deps.tar.gz
cd es_deps
sudo dpkg i lib*
sudo apt-get install -f

Signed-off-by: Srdjan <srd...@catalyst.net.nz>
---
 t/00-load.t | 43 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/t/00-load.t b/t/00-load.t
index 21b62eb..ab4b08f 100644
--- a/t/00-load.t
+++ b/t/00-load.t
@@ -2,6 +2,8 @@
 
 # This file is part of Koha.
 #
+# Copyright (c) 2016   Mark Tompsett -- is_testable()
+#
 # Koha is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 3 of the License, or
@@ -20,7 +22,7 @@ use Modern::Perl;
 use Test::More;
 use File::Spec;
 use File::Find;
-
+use English qw( -no_match_vars );
 use t::lib::Mocks;
 
 =head1 DESCRIPTION
@@ -59,13 +61,48 @@ find(
             return unless $m =~ s/[.]pm$//;
             $m =~ s{^.*/Koha/}{Koha/};
             $m =~ s{/}{::}g;
-            return if $m =~ /Koha::NorwegianPatronDB/; # uses non-mandatory 
modules
-            use_ok($m) || BAIL_OUT("***** PROBLEMS LOADING FILE '$m'");
+            if ( is_testable($m) ) {
+                use_ok($m) || BAIL_OUT("***** PROBLEMS LOADING FILE '$m'");
+            }
         },
     },
     $lib
 );
 
+# Optional modules are causing checks to fail
+# This checks for the particular modules to determine
+# if the testing is possible or not.
+#
+# Returns 1 if possible, 0 if not.
+sub is_testable {
+    my ($module_name) = @_;
+    my @needed_module_names;
+    my $return_value = 1;
+    if ( $module_name =~ /Koha::NorwegianPatronDB/xsm ) {
+        @needed_module_names =
+          ( 'SOAP::Lite', 'Crypt::GCrypt', 'Digest::SHA', 'Convert::BaseN' );
+    }
+    elsif ( $module_name =~ /Koha::ElasticSearch::Indexer/xsm ) {
+        @needed_module_names =
+          ( 'Catmandu::Importer::MARC', 'Catmandu::Store::ElasticSearch' );
+    }
+    elsif ( $module_name =~ /Koha::SearchEngine::Elasticsearch::Search/xsm ) {
+        @needed_module_names = ( 'Catmandu::Store::ElasticSearch' );
+    }
+    foreach my $current_name (@needed_module_names) {
+        my $relative_pathname = $current_name;
+        $relative_pathname =~ s/::/\//gxsm;
+        $relative_pathname .= '.pm';
+        my $check_result = eval { require "$relative_pathname"; 1; };
+        if ($EVAL_ERROR) {
+            diag(
+"Skipping testing of $module_name, because $current_name is not installed."
+            );
+            $return_value = 0;
+        }
+    }
+    return $return_value;
+}
 
 done_testing();
 
-- 
2.7.4
_______________________________________________
Koha-patches mailing list
Koha-patches@lists.koha-community.org
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to