Browse Source

Bug 4905 Runtime errors in about.pl

Calls to VERSION were generating errors when called on a string.
Use a bit of sleight of hand to avoid this
Added a couple of tests on Installer/PerlModules
Module needs better coverage testing (esp on newer perls)
Sorted to list of modules to make koha_perl_deps.pl more
human-friendly

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
3.2.x
Colin Campbell 14 years ago
committed by Galen Charlton
parent
commit
6a1191bb3f
  1. 11
      C4/Installer/PerlModules.pm
  2. 25
      t/Installer_pm.t

11
C4/Installer/PerlModules.pm

@ -80,16 +80,17 @@ sub version_info {
}
}
else {
for (keys(%$PERL_DEPS)) {
eval "require $_";
for (sort keys(%{$PERL_DEPS})) {
my $pkg = $_; # $_ holds the string
eval "require $pkg";
if ($@) {
push (@{$self->{'missing_pm'}}, {$_ => {cur_ver => 0, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
}
elsif ($_->VERSION lt $PERL_DEPS->{$_}->{'min_ver'}) {
push (@{$self->{'upgrade_pm'}}, {$_ => {cur_ver => $_->VERSION, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
elsif ($pkg->VERSION lt $PERL_DEPS->{$_}->{'min_ver'}) {
push (@{$self->{'upgrade_pm'}}, {$_ => {cur_ver => $pkg->VERSION, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
}
else {
push (@{$self->{'current_pm'}}, {$_ => {cur_ver => $_->VERSION, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
push (@{$self->{'current_pm'}}, {$_ => {cur_ver => $pkg->VERSION, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
}
}
return;

25
t/Installer_pm.t

@ -0,0 +1,25 @@
#!/usr/bin/perl
#
use strict;
use warnings;
use Test::More tests => 4;
use Data::Dumper;
BEGIN {
use_ok('C4::Installer::PerlModules');
}
my $obj = C4::Installer::PerlModules->new;
isa_ok($obj,'C4::Installer::PerlModules');
my $hash_ref = $obj->version_info(module => 'Test::More');
my $control = $Test::More::VERSION;
like($hash_ref->{'Test::More'}->{cur_ver}, qr/\d/, 'returns numeric version');
ok($hash_ref->{'Test::More'}->{cur_ver} == $control, 'returns correct version');
Loading…
Cancel
Save