diff options
Diffstat (limited to 'debian/perl-framework/Apache-Test/lib/Apache/TestRunPerl.pm')
-rw-r--r-- | debian/perl-framework/Apache-Test/lib/Apache/TestRunPerl.pm | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/debian/perl-framework/Apache-Test/lib/Apache/TestRunPerl.pm b/debian/perl-framework/Apache-Test/lib/Apache/TestRunPerl.pm new file mode 100644 index 0000000..2226575 --- /dev/null +++ b/debian/perl-framework/Apache-Test/lib/Apache/TestRunPerl.pm @@ -0,0 +1,139 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +package Apache::TestRunPerl; + +use strict; +use warnings FATAL => 'all'; + +use Apache::TestRun (); +use Apache::TestConfigParse (); +use Apache::TestTrace; + +use vars qw($VERSION); +$VERSION = '1.00'; # make CPAN.pm's r() version scanner happy + +use File::Spec::Functions qw(catfile); + +#subclass of Apache::TestRun that configures mod_perlish things +use vars qw(@ISA); +@ISA = qw(Apache::TestRun); + +sub pre_configure { + my $self = shift; + + # Apache::TestConfigPerl already configures mod_perl.so + Apache::TestConfig::autoconfig_skip_module_add('mod_perl.c'); + + # skip over Embperl.so - it's funky + Apache::TestConfig::autoconfig_skip_module_add('Embperl.c'); +} + +sub configure_modperl { + my $self = shift; + + my $test_config = $self->{test_config}; + + my $rev = $test_config->server->{rev}; + my $ver = $test_config->server->{version}; + + # sanity checking and loading the right mod_perl version + + # remove mod_perl.pm from %INC so that the below require() + # calls accurately populate $mp_ver + delete $INC{'mod_perl.pm'}; + + if ($rev == 2) { + eval { require mod_perl2 }; + } else { + eval { require mod_perl }; + } + + my $mp_ver = $mod_perl::VERSION; + if ($@) { + error "You are using mod_perl response handlers ", + "but do not have a mod_perl capable Apache."; + Apache::TestRun::exit_perl(0); + } + if (($rev == 1 && $mp_ver >= 1.99) || + ($rev == 2 && $mp_ver < 1.99)) { + error "Found mod_perl/$mp_ver, but it can't be used with $ver"; + Apache::TestRun::exit_perl(0); + } + + if ($rev == 2) { + # load apreq2 if it is present + # do things a bit differently that find_and_load_module() + # because apreq2 can't be loaded that way (the 2 causes a problem) + my $name = 'mod_apreq2.so'; + if (my $mod_path = $test_config->find_apache_module($name)) { + + # don't match the 2 here + my ($sym) = $name =~ m/mod_(\w+)2\./; + + if ($mod_path && -e $mod_path) { + $test_config->preamble(IfModule => "!mod_$sym.c", + qq{LoadModule ${sym}_module "$mod_path"\n}); + } + } + } + + $test_config->preamble_register(qw(configure_libmodperl + configure_env)); + + $test_config->postamble_register(qw(configure_inc + configure_pm_tests_inc + configure_startup_pl + configure_pm_tests)); +} + +sub configure { + my $self = shift; + + $self->configure_modperl; + + $self->SUPER::configure; +} + +#if Apache::TestRun refreshes config in the middle of configure +#we need to re-add modperl configure hooks +sub refresh { + my $self = shift; + $self->SUPER::refresh; + $self->configure_modperl; +} + +1; +__END__ + +=head1 NAME + +Apache::TestRunPerl - Run mod_perl-requiring Test Suite + +=head1 SYNOPSIS + + use Apache::TestRunPerl; + Apache::TestRunPerl->new->run(@ARGV); + +=head1 DESCRIPTION + +The C<Apache::TestRunPerl> package controls the configuration and +running of the test suite. It's a subclass of C<Apache::TestRun>, and +should be used only when you need to run mod_perl tests. + +Refer to the C<Apache::TestRun> manpage for information on the +available API. + +=cut |