Bug 4905 Runtime errors in about.pl
authorColin Campbell <colin.campbell@ptfs-europe.com>
Thu, 24 Jun 2010 14:57:21 +0000 (15:57 +0100)
committerGalen Charlton <gmcharlt@gmail.com>
Thu, 24 Jun 2010 18:16:36 +0000 (14:16 -0400)
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>
C4/Installer/PerlModules.pm
t/Installer_pm.t [new file with mode: 0755]

index 9419ce8..35d7ce0 100644 (file)
@@ -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;
diff --git a/t/Installer_pm.t b/t/Installer_pm.t
new file mode 100755 (executable)
index 0000000..4370174
--- /dev/null
@@ -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');
+
+