hi all...
I just discovered that if you use TestRunPerl to configure a third-party module, and the installer points -apxs to an apache without mod_perl, the test suite blows up due to mod_perl specific configuration directives in httpd.conf.
the end result is that, within the tests, have_module('foo.c') works for every module _except_ mod_perl, since if mod_perl isn't installed the test suit never gets started.
anyway, I think it's a good practice to <IfModule> non-core directives, and it looks like that is being done most of the time (Alias seems to be the exception). the attached patch does that for mod_perl stuff.
--Geoff
Index: lib/Apache/TestConfig.pm
===================================================================
RCS file:
/home/cvspublic/httpd-test/perl-framework/Apache-Test/lib/Apache/TestConfig.pm,v
retrieving revision 1.175
diff -u -r1.175 TestConfig.pm
--- lib/Apache/TestConfig.pm 1 Oct 2003 13:45:23 -0000 1.175
+++ lib/Apache/TestConfig.pm 2 Oct 2003 19:34:59 -0000
@@ -1259,7 +1259,7 @@
$entry = qq(Include "$file");
}
elsif ($file =~ /\.pl$/) {
- $entry = qq(PerlRequire "$file");
+ $entry = qq(<IfModule mod_perl.c>\n\tPerlRequire
"$file"\n</IfModule>\n);
}
else {
next;
Index: lib/Apache/TestConfigPerl.pm
===================================================================
RCS file:
/home/cvspublic/httpd-test/perl-framework/Apache-Test/lib/Apache/TestConfigPerl.pm,v
retrieving revision 1.76
diff -u -r1.76 TestConfigPerl.pm
--- lib/Apache/TestConfigPerl.pm 12 Aug 2003 23:36:51 -0000 1.76
+++ lib/Apache/TestConfigPerl.pm 2 Oct 2003 19:34:59 -0000
@@ -125,7 +125,8 @@
# propogate trace overrides to the server
sub configure_trace {
my $self = shift;
- $self->postamble(PerlPassEnv => 'APACHE_TEST_TRACE_LEVEL');
+ $self->postamble(IfModule => 'mod_perl.c',
+ "PerlPassEnv APACHE_TEST_TRACE_LEVEL\n");
}
sub startup_pl_code {
@@ -163,7 +164,8 @@
}
if ($self->server->{rev} >= 2) {
- $self->postamble(PerlSwitches => "-Mlib=$self->{vars}->{serverroot}");
+ $self->postamble(IfModule => 'mod_perl.c',
+ "PerlSwitches -Mlib=$self->{vars}->{serverroot}\n");
}
my $startup_pl = catfile $self->{vars}->{t_conf}, 'modperl_startup.pl';
@@ -174,7 +176,8 @@
close $fh;
}
- $self->postamble(PerlRequire => $startup_pl);
+ $self->postamble(IfModule => 'mod_perl.c',
+ "PerlRequire $startup_pl\n");
}
my %sethandler_modperl = (1 => 'perl-script', 2 => 'modperl');
