Apache-Test
view release on metacpan or search on metacpan
lib/Apache/TestConfig.pm view on Meta::CPAN
"@vars";
}
sub server { shift->{server} }
sub modperl_build_config {
my $self = shift;
my $server = ref $self ? $self->server : new_test_server();
# we can't do this if we're using httpd 1.3.X
# even if mod_perl2 is installed on the box
# similarly, we shouldn't be loading mp2 if we're not
# absolutely certain we're in a 2.X environment yet
# (such as mod_perl's own build or runtime environment)
if (($server->{rev} && $server->{rev} == 2) ||
IS_MOD_PERL_2_BUILD || $ENV{MOD_PERL_API_VERSION}) {
eval {
require Apache2::Build;
} or return;
return Apache2::Build->build_config;
}
return;
}
sub new_test_server {
my($self, $args) = @_;
Apache::TestServer->new($args || $self)
}
# setup httpd-independent components
# for httpd-specific call $self->httpd_config()
sub new {
my $class = shift;
my $args;
$args = shift if $_[0] and ref $_[0];
$args = $args ? {%$args} : {@_}; #copy
#see Apache::TestMM::{filter_args,generate_script}
#we do this so 'perl Makefile.PL' can be passed options such as apxs
#without forcing regeneration of configuration and recompilation of c-modules
#as 't/TEST apxs /path/to/apache/bin/apxs' would do
while (my($key, $val) = each %Apache::TestConfig::Argv) {
$args->{$key} = $val;
}
my $top_dir = fastcwd;
$top_dir = pop_dir($top_dir, 't');
# untaint as we are going to use it a lot later on in -T sensitive
# operations (.e.g @INC)
$top_dir = $1 if $top_dir =~ /(.*)/;
# make sure that t/conf/apache_test_config.pm is found
# (unfortunately sometimes we get thrown into / by Apache so we
# can't just rely on $top_dir
lib->import($top_dir);
my $thaw = {};
#thaw current config
for (qw(conf t/conf)) {
last if eval {
require "$_/apache_test_config.pm";
$thaw = 'apache_test_config'->new;
delete $thaw->{save};
#incase class that generated the config was
#something else, which we can't be sure how to load
bless $thaw, 'Apache::TestConfig';
};
}
if ($args->{thaw} and ref($thaw) ne 'HASH') {
#dont generate any new config
$thaw->{vars}->{$_} = $args->{$_} for keys %$args;
$thaw->{server} = $thaw->new_test_server;
$thaw->add_inc;
return $thaw;
}
#regenerating config, so forget old
if ($args->{save}) {
for (qw(vhosts inherit_config modules inc cmodules)) {
delete $thaw->{$_} if exists $thaw->{$_};
}
}
my $self = bless {
clean => {},
vhosts => {},
inherit_config => {},
modules => {},
inc => [],
%$thaw,
mpm => "",
httpd_defines => {},
vars => $args,
postamble => [],
preamble => [],
postamble_hooks => [],
preamble_hooks => [],
}, ref($class) || $class;
my $vars = $self->{vars}; #things that can be overridden
for (qw(save verbose)) {
next unless exists $args->{$_};
$self->{$_} = delete $args->{$_};
}
$vars->{top_dir} ||= $top_dir;
$self->add_inc;
#help to find libmodperl.so
unless ($vars->{src_dir}) {
( run in 0.802 second using v1.01-cache-2.11-cpan-39bf76dae61 )