5e6da05b10
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 <srdjan@catalyst.net.nz> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Galen Charlton <gmcharlt@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
109 lines
3.1 KiB
Perl
109 lines
3.1 KiB
Perl
#!/usr/bin/perl
|
|
|
|
# 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
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
use Modern::Perl;
|
|
|
|
use Test::More;
|
|
use File::Spec;
|
|
use File::Find;
|
|
use English qw( -no_match_vars );
|
|
use t::lib::Mocks;
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
00-load.t: This script is called by the pre-commit git hook to test modules compile
|
|
|
|
=cut
|
|
|
|
my $context_module = t::lib::Mocks::mock_dbh;
|
|
|
|
# Loop through the C4:: modules
|
|
my $lib = File::Spec->rel2abs('C4');
|
|
find({
|
|
bydepth => 1,
|
|
no_chdir => 1,
|
|
wanted => sub {
|
|
my $m = $_;
|
|
return unless $m =~ s/[.]pm$//;
|
|
|
|
$m =~ s{^.*/C4/}{C4/};
|
|
$m =~ s{/}{::}g;
|
|
return if $m =~ /Auth_with_ldap/; # Dont test this, it will fail on use
|
|
return if $m =~ /SIPServer/; # SIP Server module has old package usage
|
|
use_ok($m) || BAIL_OUT("***** PROBLEMS LOADING FILE '$m'");
|
|
},
|
|
}, $lib);
|
|
|
|
# Loop through the Koha:: modules
|
|
$lib = File::Spec->rel2abs('Koha');
|
|
find(
|
|
{
|
|
bydepth => 1,
|
|
no_chdir => 1,
|
|
wanted => sub {
|
|
my $m = $_;
|
|
return unless $m =~ s/[.]pm$//;
|
|
$m =~ s{^.*/Koha/}{Koha/};
|
|
$m =~ s{/}{::}g;
|
|
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();
|
|
|
|
1;
|