@@ -, +, @@ --------- -- should barf horribly on Catmandu stuff if not: sudo apt-get remove libcatmandu-marc-perl then repeat step. -- should not barf horribly listed in the PerlDependencies.pm, while there is no mention of Catmandu libraries at all there. This may be another bug which needs fixing. --- t/00-load.t | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) --- a/t/00-load.t +++ a/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(); --