package TestDirective::perlloadmodule5; # in this test we test an early mod_perl startup caused by an # EXEC_ON_READ directive in the baseserver. In this test we have a # mod_perl native directive before a non-native directive inside vhost # section. Here mod_perl sets scfg for that vhost by itself. # # See also perlloadmodule4.pm, which is almost the same, but has no # mod_perl native directive before a non-native directive in vhost. In # that test the non-native mod_perl directive sets scfg on behalf of # mod_perl in that vhost. # # see perlloadmodule6.pm for the case where mod_perl starts early, but # from within the vhost. use strict; use warnings FATAL => 'all'; use Apache2::CmdParms (); use Apache2::Module (); use Apache2::ServerUtil (); use Apache2::Const -compile => qw(OK); use constant KEY => "MyTest5"; my @directives = ({ name => +KEY },); Apache2::Module::add(__PACKAGE__, \@directives); sub MyTest5 { my ($self, $parms, $arg) = @_; $self->{+KEY} = $arg; unless ($parms->path) { my $srv_cfg = Apache2::Module::get_config($self, $parms->server); $srv_cfg->{+KEY} = $arg; } } ### response handler ### use Apache2::RequestRec (); use Apache2::RequestIO (); use Apache2::ServerRec (); use Apache2::ServerUtil (); use Apache2::Module (); use Apache::Test; use Apache::TestUtil; use Apache2::Const -compile => qw(OK); sub get_config { Apache2::Module::get_config(__PACKAGE__, @_); } sub handler { my ($r) = @_; my %secs = (); $r->content_type('text/plain'); my $s = $r->server; my $dir_cfg = get_config($s, $r->per_dir_config); my $srv_cfg = get_config($s); plan $r, tests => 3; ok $s->is_virtual; ok t_cmp($dir_cfg->{+KEY}, "Dir", "Section"); ok t_cmp($srv_cfg->{+KEY}, "Vhost", "Section"); return Apache2::Const::OK; } 1; __END__ # APACHE_TEST_CONFIG_ORDER 950 PerlLoadModule TestDirective::perlloadmodule5 # here mod_perl sets the scfg by itself for this vhost PerlModule File::Spec MyTest5 "Vhost" MyTest5 "Dir" SetHandler modperl PerlResponseHandler TestDirective::perlloadmodule5