You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2005/03/04 02:38:03 UTC

svn commit: r156118 - in perl/modperl/trunk: Changes t/error/runtime.t t/response/TestError/runtime.pm xs/APR/Error/Error_pm

Author: stas
Date: Thu Mar  3 17:37:59 2005
New Revision: 156118

URL: http://svn.apache.org/viewcvs?view=rev&rev=156118
Log:
fix APR::Error's overload of '==' (it was always returning true
before), and add the corresponding '!='

Modified:
    perl/modperl/trunk/Changes
    perl/modperl/trunk/t/error/runtime.t
    perl/modperl/trunk/t/response/TestError/runtime.pm
    perl/modperl/trunk/xs/APR/Error/Error_pm

Modified: perl/modperl/trunk/Changes
URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/Changes?view=diff&r1=156117&r2=156118
==============================================================================
--- perl/modperl/trunk/Changes (original)
+++ perl/modperl/trunk/Changes Thu Mar  3 17:37:59 2005
@@ -12,6 +12,9 @@
 
 =item 1.999_22-dev
 
+fix APR::Error's overload of '==' (it was always returning true
+before), and add the corresponding '!=' [Stas]
+
 if $r->document_root was modified, restore it at the end of request
 [joes]
 

Modified: perl/modperl/trunk/t/error/runtime.t
URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/t/error/runtime.t?view=diff&r1=156117&r2=156118
==============================================================================
--- perl/modperl/trunk/t/error/runtime.t (original)
+++ perl/modperl/trunk/t/error/runtime.t Thu Mar  3 17:37:59 2005
@@ -11,7 +11,8 @@
                    die_hook_confess_mp_error die_hook_confess_non_mp_error
                    die_hook_custom_mp_error  die_hook_custom_non_mp_error);
 my @trapped   = qw(eval_block_mp_error       eval_block_non_mp_error
-                   eval_string_mp_error      eval_block_non_error);
+                   eval_string_mp_error      eval_block_non_error
+                   overload_test);
 
 plan tests => @untrapped + @trapped;
 

Modified: perl/modperl/trunk/t/response/TestError/runtime.pm
URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/t/response/TestError/runtime.pm?view=diff&r1=156117&r2=156118
==============================================================================
--- perl/modperl/trunk/t/response/TestError/runtime.pm (original)
+++ perl/modperl/trunk/t/response/TestError/runtime.pm Thu Mar  3 17:37:59 2005
@@ -11,7 +11,7 @@
 use Apache::TestUtil;
 
 use Apache::Const -compile => qw(OK);
-use APR::Const    -compile => qw(TIMEUP);
+use APR::Const    -compile => qw(EACCES EAGAIN);
 
 use constant SIZE => 2048;
 
@@ -32,6 +32,30 @@
     return Apache::OK;
 }
 
+sub overload_test {
+    my($r, $socket) = @_;
+
+    eval { mp_error($socket) };
+
+    die "there should have been an exception" unless $@;
+
+    die "the exception should have been an APR::Error object"
+        unless ref $@ eq 'APR::Error';
+
+    # == && != (expecting APR::EAGAIN error)
+    die "'==' overload is broken" unless $@ == APR::EAGAIN;
+    die "'==' overload is broken" unless APR::EAGAIN == $@;
+    die "'==' overload is broken" unless $@ == $@;
+    die "'!=' overload is broken" unless $@ != APR::EACCES;
+    die "'!=' overload is broken" unless APR::EACCES != $@;
+    die "'!=' overload is broken" if     $@ != $@;
+
+    # XXX: add more overload tests
+
+    $r->print("ok overload_test");
+
+}
+
 sub plain_mp_error {
     my($r, $socket) = @_;
     t_server_log_error_is_expected();
@@ -78,7 +102,7 @@
     # throw in some retry attempts
     my $tries = 0;
     RETRY: eval { mp_error($socket) };
-    if ($@ && ref($@) && $@ == APR::TIMEUP) {
+    if ($@ && ref($@) && $@ == APR::EAGAIN) {
         if ($tries++ < 3) {
             goto RETRY;
         }
@@ -94,7 +118,7 @@
 sub eval_string_mp_error {
     my($r, $socket) = @_;
     eval '$socket->recv(my $buffer, SIZE)';
-    if ($@ && ref($@) && $@ == APR::TIMEUP) {
+    if ($@ && ref($@) && $@ == APR::EAGAIN) {
         $r->print("ok eval_string_mp_error");
     }
     else {

Modified: perl/modperl/trunk/xs/APR/Error/Error_pm
URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/xs/APR/Error/Error_pm?view=diff&r1=156117&r2=156118
==============================================================================
--- perl/modperl/trunk/xs/APR/Error/Error_pm (original)
+++ perl/modperl/trunk/xs/APR/Error/Error_pm Thu Mar  3 17:37:59 2005
@@ -6,7 +6,8 @@
 use overload
     nomethod => \&fatal,
     'bool'   => \&str,
-    '=='     => \&num,
+    '=='     => \&num_cmp,
+    '!='     => \&num_cmp_not,
     '0+'     => \&num,
     '""'     => \&str;
 
@@ -37,6 +38,9 @@
 
 sub num { $_[0]->{rc} }
 
+sub num_cmp     { $_[0]->{rc} == $_[1] }
+sub num_cmp_not { $_[0]->{rc} != $_[1] }
+
 # skip the wrappers from this package from the long callers trace
 $Carp::CarpInternal{+__PACKAGE__}++;
 
@@ -63,6 +67,3 @@
         &Carp::confess;
     }
 }
-
-1;
-__END__