stas 2004/08/13 22:10:12
Modified: t/api .cvsignore internal_redirect.t
t/response/TestAPI lookup_uri.pm
. Changes
todo api_status
xs/maps apache_functions.map
Added: t/api internal_redirect_handler.t lookup_misc.t
lookup_uri.t sub_request.t
t/response/TestAPI internal_redirect_handler.pm
lookup_misc.pm sub_request.pm
Log:
- fix Apache::SubRequest's methods: lookup_file, lookup_uri,
lookup_method_uri to default the last argument to
r->proto_output_filters (no request filters for the subrequest) and
not r->output_filters->next as it was before (one filter was getting
skipped and the rest of the filters were applied *twice*).
- add more sub-request tests
Revision Changes Path
1.15 +0 -1 modperl-2.0/t/api/.cvsignore
Index: .cvsignore
===================================================================
RCS file: /home/cvs/modperl-2.0/t/api/.cvsignore,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -u -r1.14 -r1.15
--- .cvsignore 12 Aug 2004 06:40:45 -0000 1.14
+++ .cvsignore 14 Aug 2004 05:10:11 -0000 1.15
@@ -4,7 +4,6 @@
conn_rec.t
conn_util.t
lookup_uri2.t
-lookup_uri.t
module.t
process.t
query.t
1.3 +1 -1 modperl-2.0/t/api/internal_redirect.t
Index: internal_redirect.t
===================================================================
RCS file: /home/cvs/modperl-2.0/t/api/internal_redirect.t,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -u -r1.2 -r1.3
--- internal_redirect.t 8 Jul 2004 05:29:42 -0000 1.2
+++ internal_redirect.t 14 Aug 2004 05:10:11 -0000 1.3
@@ -18,7 +18,7 @@
"modperl => perl-script" => "${uri}_modperl?uri=${uri}_perl_script",
);
-plan tests => 4;
+plan tests => scalar keys %map;
while (my($key, $val) = each %map) {
my $expected = "internal redirect: $key";
1.1 modperl-2.0/t/api/internal_redirect_handler.t
Index: internal_redirect_handler.t
===================================================================
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;
my $uri = "/TestAPI__internal_redirect_handler";
my @ct_types = qw(text/plain text/html);
plan tests => scalar @ct_types;
for my $type (@ct_types) {
my $expected = $type;
my $received = GET_BODY_ASSERT "$uri?ct=$type";
ok t_cmp $received, $expected, "Content-type: $type";
}
1.1 modperl-2.0/t/api/lookup_misc.t
Index: lookup_misc.t
===================================================================
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;
use File::Spec;
my $uri = "/TestAPI__lookup_misc";
my $file = File::Spec->rel2abs(__FILE__);
open my $fh, $file or die "Can't open $file: $!";
my $data = do { binmode $fh; local $/; <$fh> };
close $fh;
plan tests => 2;
# lookup_file
{
my $args = "subreq=lookup_file;file=$file";
my $expected = $data;
my $received = GET_BODY_ASSERT "$uri?$args";
t_debug "lookup_file";
ok $received eq $expected;
}
# lookup_method_uri
{
my $args = "subreq=lookup_method_uri;uri=/lookup_method_uri";
my $expected = "ok";
my $received = GET_BODY_ASSERT "$uri?$args";
ok t_cmp $received, $expected, "lookup_method_uri";
}
1.1 modperl-2.0/t/api/lookup_uri.t
Index: lookup_uri.t
===================================================================
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;
my $uri = "/TestAPI__lookup_uri";
use constant PREFIX => 0;
use constant SUFFIX => 1;
my %opts = (
first => [2, 2], # all filters run twice
second => [1, 2], # the top level req filter skipped for the subreq
none => [1, 1], # no request filters run by subreq
default => [1, 1], # same as none
);
plan tests => scalar keys %opts;
while (my($filter, $runs) = each %opts) {
my $args = "subreq=lookup_uri;filter=$filter";
my $prefix = "pre+" x $runs->[PREFIX];
my $suffix = "+suf" x $runs->[SUFFIX];
my $expected = "$prefix$args$suffix";
my $received = GET_BODY_ASSERT "$uri?$args";
ok t_cmp $received, $expected, "$args";
}
1.1 modperl-2.0/t/api/sub_request.t
Index: sub_request.t
===================================================================
# WARNING: this file is generated, do not edit
# 01: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestConfig.pm:875
# 02: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestConfig.pm:893
# 03: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestConfigPerl.pm:138
# 04: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestConfigPerl.pm:553
# 05: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestConfig.pm:561
# 06: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestConfig.pm:576
# 07: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestConfig.pm:1505
# 08: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestRun.pm:499
# 09: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestRunPerl.pm:80
# 10: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestRun.pm:714
# 11: /home/stas/apache.org/mp2-pool/Apache-Test/lib/Apache/TestRun.pm:714
# 12: /home/stas/apache.org/mp2-pool/t/TEST:21
use Apache::TestRequest 'GET_BODY_ASSERT';
print GET_BODY_ASSERT "/TestAPI__sub_request";
1.3 +65 -10 modperl-2.0/t/response/TestAPI/lookup_uri.pm
Index: lookup_uri.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/lookup_uri.pm,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -u -r1.2 -r1.3
--- lookup_uri.pm 11 Apr 2002 11:08:43 -0000 1.2
+++ lookup_uri.pm 14 Aug 2004 05:10:12 -0000 1.3
@@ -1,28 +1,83 @@
package TestAPI::lookup_uri;
+# tests $r->lookup_uri and its work with filters
+
use strict;
use warnings FATAL => 'all';
-use Apache::Test;
-
+use Apache::RequestRec ();
+use Apache::RequestIO ();
+use Apache::Filter ();
use Apache::SubRequest ();
use Apache::Const -compile => 'OK';
+my $uri = '/' . Apache::TestRequest::module2path(__PACKAGE__);
+
sub handler {
my $r = shift;
- my $uri = '/lookup_uri';
- my $subr = $r->lookup_uri($uri);
- die unless $subr->uri eq $uri;
- $subr->run;
+ my $args = $r->args || '';
+ my %args = map { split '=', $_, 2 } split /;/, $args;
+
+ if ($args{main}) {
+ $args =~ s/main=1;//;
+ $r->print($args);
+ }
+ else {
+ my $new_args = "$uri?main=1;$args";
+ my $subr;
+ if ($args{filter} eq 'first') {
+ # run all request filters
+ $subr = $r->lookup_uri($new_args,
+ $r->output_filters);
+ }
+ if ($args{filter} eq 'second') {
+ # run all request filters, but the top one
+ $subr = $r->lookup_uri($new_args,
+ $r->output_filters->next);
+ }
+ elsif ($args{filter} eq 'default') {
+ # run none of request filters
+ $subr = $r->lookup_uri($new_args);
+ }
+ elsif ($args{filter} eq 'none') {
+ # run none of request filters
+ $subr = $r->lookup_uri($new_args,
+ $r->proto_output_filters);
+ }
+ else {
+ # nada
+ }
+
+ $subr->run;
+ }
+
+ Apache::OK;
+}
+
+sub prefix_filter {
+ my $filter = shift;
+
+ while ($filter->read(my $buffer, 1024)) {
+ $filter->print("pre+$buffer");
+ }
+
+ Apache::OK;
+}
+
+sub suffix_filter {
+ my $filter = shift;
+
+ while ($filter->read(my $buffer, 1024)) {
+ $filter->print("$buffer+suf");
+ }
Apache::OK;
}
1;
__DATA__
-<Location /lookup_uri>
- SetHandler modperl
- PerlResponseHandler Apache::TestHandler::ok1
-</Location>
+PerlModule TestAPI::lookup_uri
+PerlOutputFilterHandler TestAPI::lookup_uri::prefix_filter
+PerlOutputFilterHandler TestAPI::lookup_uri::suffix_filter
1.1 modperl-2.0/t/response/TestAPI/internal_redirect_handler.pm
Index: internal_redirect_handler.pm
===================================================================
package TestAPI::internal_redirect_handler;
# $r->internal_redirect_handler() is the same as
# $r->internal_redirect() but it uses the same content-type as the
# top-level handler
use strict;
use warnings FATAL => 'all';
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::SubRequest ();
use Apache::Const -compile => 'OK';
my $uri = '/' . Apache::TestRequest::module2path(__PACKAGE__);
sub handler {
my $r = shift;
my %args = map { split '=', $_, 2 } split /[&]/, $r->args;
if ($args{main}) {
# sub-req should see the same content-type as the top-level
my $ct = $r->content_type;
$r->content_type('text/plain');
$r->print($ct);
}
else {
# main-req
$r->content_type($args{ct});
$r->internal_redirect_handler("$uri?main=1");
}
Apache::OK;
}
1;
__DATA__
1.1 modperl-2.0/t/response/TestAPI/lookup_misc.pm
Index: lookup_misc.pm
===================================================================
package TestAPI::lookup_misc;
# testing misc lookup_ methods. TestAPI::lookup_uri includes the tests
# for lookup_uri and for filters, which should be the same for all
# other lookup_ methods
use strict;
use warnings FATAL => 'all';
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::Filter ();
use Apache::SubRequest ();
use Apache::TestTrace;
use Apache::Const -compile => 'OK';
my $uri = '/' . Apache::TestRequest::module2path(__PACKAGE__);
sub handler {
my $r = shift;
my %args = map { split '=', $_, 2 } split /;/, $r->args;
if ($args{subreq} eq 'lookup_file') {
debug "lookup_file($args{file})";
my $subr = $r->lookup_file($args{file});
$subr->run;
}
elsif ($args{subreq} eq 'lookup_method_uri') {
debug "lookup_method_uri($args{uri})";
my $subr = $r->lookup_method_uri("GET", $args{uri});
$subr->run;
}
else {
$r->print("default");
}
Apache::OK;
}
1;
__DATA__
<Location /lookup_method_uri>
SetHandler modperl
PerlResponseHandler Apache::TestHandler::ok
</Location>
1.1 modperl-2.0/t/response/TestAPI/sub_request.pm
Index: sub_request.pm
===================================================================
package TestAPI::sub_request;
# basic subrequest tests
use strict;
use warnings FATAL => 'all';
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::SubRequest ();
use Apache::Test;
use Apache::TestUtil;
use Apache::Const -compile => qw(OK SERVER_ERROR);
my $uri = '/' . Apache::TestRequest::module2path(__PACKAGE__);
sub handler {
my $r = shift;
my $args = $r->args || '';
return Apache::SERVER_ERROR if $args eq 'subreq';
plan $r, tests => 4;
my $subr = $r->lookup_uri("$uri?subreq");
ok $subr->isa('Apache::SubRequest');
ok t_cmp $subr->uri, $uri, "uri";
my $rc = $subr->run;
ok $rc, Apache::SERVER_ERROR, "rc";
# test an explictit DESTROY (which happens automatically on the
# scope exit)
$subr->DESTROY;
ok 1;
Apache::OK;
}
1;
__DATA__
1.445 +6 -0 modperl-2.0/Changes
Index: Changes
===================================================================
RCS file: /home/cvs/modperl-2.0/Changes,v
retrieving revision 1.444
retrieving revision 1.445
diff -u -u -r1.444 -r1.445
--- Changes 13 Aug 2004 04:42:37 -0000 1.444
+++ Changes 14 Aug 2004 05:10:12 -0000 1.445
@@ -12,6 +12,12 @@
=item 1.99_15-dev
+fix Apache::SubRequest's methods: lookup_file, lookup_uri,
+lookup_method_uri to default the last argument to
+r->proto_output_filters (no request filters for the subrequest) and
+not r->output_filters->next as it was before (one filter was getting
+skipped and the rest of the filters were applied *twice*). [Stas]
+
Apache::CmdParms changes [Gozer]
- readwrite => readonly:
override, limited, directive, pool, temp_pool, server, path,
1.31 +3 -1 modperl-2.0/todo/api_status
Index: api_status
===================================================================
RCS file: /home/cvs/modperl-2.0/todo/api_status,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -u -r1.30 -r1.31
--- api_status 14 Aug 2004 00:24:16 -0000 1.30
+++ api_status 14 Aug 2004 05:10:12 -0000 1.31
@@ -55,7 +55,9 @@
error_log2stderr
-- src/docs/2.0/api/Apache/Status.pod
VV src/docs/2.0/api/Apache/SubProcess.pod
--- src/docs/2.0/api/Apache/SubRequest.pod
+VV src/docs/2.0/api/Apache/SubRequest.pod
+ internal_fast_redirect
+ lookup_dirent
VV src/docs/2.0/api/Apache/URI.pod
VV src/docs/2.0/api/Apache/Util.pod
-- src/docs/2.0/api/Apache/compat.pod
1.95 +3 -3 modperl-2.0/xs/maps/apache_functions.map
Index: apache_functions.map
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/maps/apache_functions.map,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -u -r1.94 -r1.95
--- apache_functions.map 11 Aug 2004 23:03:18 -0000 1.94
+++ apache_functions.map 14 Aug 2004 05:10:12 -0000 1.95
@@ -88,13 +88,13 @@
ap_sub_req_lookup_dirent | | r, finfo, subtype=AP_SUBREQ_NO_ARGS,
next_filter=NULL | lookup_dirent
subrequest_rec *:ap_sub_req_lookup_file | | \
- r, new_file, next_filter=r->output_filters->next | lookup_file
+ r, new_file, next_filter=r->proto_output_filters | lookup_file
subrequest_rec *:ap_sub_req_lookup_uri | | \
- r, new_file, next_filter=r->output_filters->next | lookup_uri
+ r, new_file, next_filter=r->proto_output_filters | lookup_uri
subrequest_rec *:ap_sub_req_method_uri | | \
- r, method, new_file, next_filter=r->output_filters->next | lookup_method_uri
+ r, method, new_file, next_filter=r->proto_output_filters | lookup_method_uri
PACKAGE=Apache::SubRequest ISA=Apache::RequestRec
ap_destroy_sub_req | | r | DESTROY