stas 2004/02/14 15:22:07
Modified: src/modules/perl modperl_handler.c
t/filter both_str_req_add.t
t/hooks .cvsignore push_handlers.t
Added: t/hooks/TestHooks push_handlers_blessed.pm
Log:
- B::Deparse >= 0.61 is only available since 5.8.x, but unless a code ref is
blessed it'll work with older B::Deparse as well. Adjust the code to require 0.61
only if the code ref is blessed. otherwise require 0.60.
- add a blessed code ref test.
Revision Changes Path
1.24 +7 -4 modperl-2.0/src/modules/perl/modperl_handler.c
Index: modperl_handler.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -u -r1.23 -r1.24
--- modperl_handler.c 14 Feb 2004 19:23:05 -0000 1.23
+++ modperl_handler.c 14 Feb 2004 23:22:06 -0000 1.24
@@ -8,12 +8,15 @@
int count;
SV *bdeparse;
char *text;
-
- /* B::Deparse >= 0.61 needed for blessed code references */
-
+
+ /* B::Deparse >= 0.61 needed for blessed code references.
+ * 0.6 works fine for non-blessed code refs.
+ * notice that B::Deparse is not CPAN-updatable.
+ * 0.61 is available starting from 5.8.0
+ */
load_module(PERL_LOADMOD_NOIMPORT,
newSVpvn("B::Deparse", 10),
- newSVnv(0.61));
+ newSVnv(SvOBJECT((SV*)cv) ? 0.61 : 0.60));
ENTER;
SAVETMPS;
1.4 +1 -1 modperl-2.0/t/filter/both_str_req_add.t
Index: both_str_req_add.t
===================================================================
RCS file: /home/cvs/modperl-2.0/t/filter/both_str_req_add.t,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -u -r1.3 -r1.4
--- both_str_req_add.t 9 Feb 2004 19:32:42 -0000 1.3
+++ both_str_req_add.t 14 Feb 2004 23:22:06 -0000 1.4
@@ -5,7 +5,7 @@
use Apache::TestRequest;
use Apache::TestUtil;
-plan tests => 1;
+plan tests => 1, have_min_module_version('B::Deparse', 0.6);
my $data = join ' ', 'A'..'Z', 0..9;
my $expected = lc $data; # that's what the input filter does
1.5 +2 -1 modperl-2.0/t/hooks/.cvsignore
Index: .cvsignore
===================================================================
RCS file: /home/cvs/modperl-2.0/t/hooks/.cvsignore,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -u -r1.4 -r1.5
--- .cvsignore 9 Feb 2004 19:08:35 -0000 1.4
+++ .cvsignore 14 Feb 2004 23:22:07 -0000 1.5
@@ -5,4 +5,5 @@
fixup.t
trans.t
init.t
-push_handlers_same_phase.t
\ No newline at end of file
+push_handlers_same_phase.t
+push_handlers_blessed.t
1.5 +1 -1 modperl-2.0/t/hooks/push_handlers.t
Index: push_handlers.t
===================================================================
RCS file: /home/cvs/modperl-2.0/t/hooks/push_handlers.t,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -u -r1.4 -r1.5
--- push_handlers.t 9 Feb 2004 19:32:43 -0000 1.4
+++ push_handlers.t 14 Feb 2004 23:22:07 -0000 1.5
@@ -5,7 +5,7 @@
use Apache::TestUtil;
use Apache::TestRequest;
-plan tests => 1;
+plan tests => 1, have_min_module_version('B::Deparse', 0.6);
my @refs = qw(conf conf1 conf2 coderef
full_coderef coderef1 coderef2 coderef3);
1.1 modperl-2.0/t/hooks/TestHooks/push_handlers_blessed.pm
Index: push_handlers_blessed.pm
===================================================================
package TestHooks::push_handlers_blessed;
# test that we
# - can push and execute blessed anon handlers
use strict;
use warnings FATAL => 'all';
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
use APR::Table ();
use Apache::Test;
use Apache::TestUtil;
use Apache::Const -compile => qw(OK DECLINED);
sub handler {
my $r = shift;
plan $r, tests => 1, have_min_module_version('B::Deparse', 0.61);;
my $sub = sub {
ok 1;
return Apache::OK;
};
my $handler = bless $sub, __PACKAGE__;
$r->push_handlers(PerlResponseHandler => $handler);
return Apache::DECLINED;
}
1;
__DATA__
<NoAutoConfig>
<Location /TestHooks__push_handlers_blessed>
SetHandler modperl
PerlResponseHandler TestHooks::push_handlers_blessed
</Location>
</NoAutoConfig>