There's a bug in Apache::Test that prevents it from working properly when you're trying to test something with mp1 when you've got mp2 installed.

What happens is that Apache::TestConfig does this:

use constant IS_MOD_PERL_2       =>
    eval { require mod_perl2 } || 0;

Which of course is wrong, that should be IS_MOD_PERL_2_INSTALLED for a start, but I haven't patched that.

What then happens later is in TestRunPerl we do:

    if ($rev == 2) {
        eval { require mod_perl2 };
    } else {
        eval { require mod_perl };
    }
    my $mp_ver = $mod_perl::VERSION;

Which now because mod_perl2 is already loaded, always returns the mp2 version.

Side comment: This stuff is a real maze of twisty passages - the only way I could find to debug this was to add Carp::cluck() to mod_perl2.pm so I knew what was loading it. I wish it were written a bit simpler. Maybe I'm underestimating the complexity of what it's trying to do.

Patch (mail.app will strip trailing whitespace, so apply with -b or just do it manually):

--- lib/Apache/TestRunPerl.pm.orig      Fri Jul 15 16:17:05 2005
+++ lib/Apache/TestRunPerl.pm   Fri Jul 15 16:17:50 2005
@@ -49,6 +49,7 @@
     my $ver = $test_config->server->{version};

     # sanity checking and loading the right mod_perl version
+    delete $INC{'mod_perl.pm'};
     if ($rev == 2) {
         eval { require mod_perl2 };
     } else {

Reply via email to