dougm 2002/08/26 21:31:55 Modified: lib/ModPerl TestRun.pm Added: t/response/TestDirective loadmodule.pm Log: test for directive handlers Revision Changes Path 1.3 +14 -0 modperl-2.0/lib/ModPerl/TestRun.pm Index: TestRun.pm =================================================================== RCS file: /home/cvs/modperl-2.0/lib/ModPerl/TestRun.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestRun.pm 24 Aug 2002 16:12:57 -0000 1.2 +++ TestRun.pm 27 Aug 2002 04:31:55 -0000 1.3 @@ -27,11 +27,25 @@ $self->SUPER::configure_startup_pl; + #XXX: issue for these is they need to happen after PerlSwitches + #XXX: this should only be done for the modperl-2.0 tests $self->postamble(<<'EOF'); <Perl handler=ModPerl::Test::perl_section> $Foo = 'bar'; </Perl> +EOF + + #XXX: this should only be done for the modperl-2.0 tests + $self->postamble(<<'EOF'); +LoadModule TestDirective::loadmodule + +MyTest one two +ServerTest per-server + +<Location /TestDirective::loadmodule> + MyOtherTest value +</Location> EOF } 1.1 modperl-2.0/t/response/TestDirective/loadmodule.pm Index: loadmodule.pm =================================================================== package TestDirective::loadmodule; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::Const -compile => qw(OK OR_ALL RSRC_CONF TAKE1 TAKE23); use Apache::CmdParms (); use Apache::Module (); our @APACHE_MODULE_COMMANDS = ( { name => 'MyTest', func => __PACKAGE__ . '::MyTest', req_override => Apache::RSRC_CONF, # req_override => 'RSRC_CONF', #test 1.x compat for strings args_how => Apache::TAKE23, # args_how => 'TAKE23', #test 1.x compat for strings errmsg => 'A test', }, { name => 'MyOtherTest', }, { name => 'ServerTest', req_override => Apache::RSRC_CONF, } ); sub DIR_CREATE { my($class, $parms) = @_; bless { path => $parms->path || "/", }, $class; } sub merge { my($base, $add) = @_; my %new = (); @new{keys %$base, keys %$add} = (values %$base, values %$add); return bless \%new, ref($base); } sub DIR_MERGE { my $class = ref $_[0]; # warn "$class->DIR_MERGE\n"; merge(@_); } sub SERVER_MERGE { my $class = ref $_[0]; # warn "$class->SERVER_MERGE\n"; merge(@_); } sub SERVER_CREATE { my($class, $parms) = @_; # warn "$class->SERVER_CREATE\n"; return bless { name => __PACKAGE__, }, $class; } sub MyTest { my($self, $parms, @args) = @_; $self->{MyTest} = \@args; } sub MyOtherTest { my($self, $parms, $arg) = @_; $self->{MyOtherTest} = $arg; } sub ServerTest { my($self, $parms, $arg) = @_; my $srv_cfg = $self->get_config($parms->server); $srv_cfg->{ServerTest} = $arg; } sub get_config { my($self, $s) = (shift, shift); Apache::Module->get_config($self, $s, @_); } sub handler : method { my($self, $r) = @_; my $s = $r->server; my $dir_cfg = $self->get_config($s, $r->per_dir_config); my $srv_cfg = $self->get_config($s); plan $r, tests => 7; t_debug("per-dir config:", $dir_cfg); t_debug("per-srv config:", $srv_cfg); ok $dir_cfg->isa($self); ok $srv_cfg->isa($self); my $path = $dir_cfg->{path}; ok t_cmp(qr{^$path}, $r->uri, 'r->uri =~ parms->path'); ok t_cmp($self, $srv_cfg->{name}, '$self eq $srv_cfg->{name}'); ok t_cmp('value', $dir_cfg->{MyOtherTest}, 'MyOtherTest value'); ok t_cmp(['one', 'two'], $dir_cfg->{MyTest}, 'MyTest one two'); ok t_cmp('per-server', $srv_cfg->{ServerTest}); Apache::OK; } 1; __END__