stas 2003/02/06 16:15:39 Modified: ModPerl-Registry/t .cvsignore 500.t ModPerl-Registry/t/cgi-bin runtime_error.pl Added: ModPerl-Registry/t/cgi-bin runtime_error_n_status_change.pl runtime_error_plus_body.pl Log: add several more tests which explore various situations when runtime errors happen Revision Changes Path 1.3 +1 -0 modperl-2.0/ModPerl-Registry/t/.cvsignore Index: .cvsignore =================================================================== RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/t/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- .cvsignore 18 Oct 2001 04:25:12 -0000 1.2 +++ .cvsignore 7 Feb 2003 00:15:39 -0000 1.3 @@ -1,3 +1,4 @@ logs htdocs TEST +SMOKE 1.3 +44 -4 modperl-2.0/ModPerl-Registry/t/500.t Index: 500.t =================================================================== RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/t/500.t,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- 500.t 23 Jan 2003 01:12:01 -0000 1.2 +++ 500.t 7 Feb 2003 00:15:39 -0000 1.3 @@ -5,7 +5,21 @@ use Apache::TestUtil; use Apache::TestRequest qw(GET); -plan tests => 3; +plan tests => 6; + +{ + # the script changes the status before the run-time error happens, + # this status change should be ignored + my $url = "/registry/runtime_error_n_status_change.pl"; + my $res = GET($url); + #t_debug($res->content); + ok t_cmp( + 500, + $res->code, + "500 error on runtime error (when the script changes the status)", + ); +} + { @@ -20,6 +34,21 @@ } { + my $url = "/registry/missing_headers.pl"; + my $res = GET($url); + #t_debug($res->content); + ok t_cmp( + 500, + $res->code, + "500 error on missing HTTP headers", + ); +} + +{ + # since we have a runtime error before any body is sent, mod_perl + # has a chance to communicate the return status of the script to + # Apache before headers are sent, so we get the code 500 in the + # HTTP headers my $url = "/registry/runtime_error.pl"; my $res = GET($url); #t_debug($res->content); @@ -31,12 +60,23 @@ } { - my $url = "/registry/missing_headers.pl"; + # even though we have a runtime error here, the scripts succeeds + # to send some body before the error happens and since by that + # time Apache has already sent the headers, they will include + # 200 OK + my $url = "/registry/runtime_error_plus_body.pl"; my $res = GET($url); #t_debug($res->content); ok t_cmp( - 500, + 200, $res->code, - "500 error on missing HTTP headers", + "200, followed by a runtime error", + ); + + # the error message is attached after the body + ok t_cmp( + qr/some body.*The server encountered an internal error/ms, + $res->content, + "200, followed by a runtime error", ); } 1.2 +3 -0 modperl-2.0/ModPerl-Registry/t/cgi-bin/runtime_error.pl Index: runtime_error.pl =================================================================== RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/t/cgi-bin/runtime_error.pl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- runtime_error.pl 23 Jan 2003 01:12:01 -0000 1.1 +++ runtime_error.pl 7 Feb 2003 00:15:39 -0000 1.2 @@ -1,2 +1,5 @@ +# this script sends no body at all, and since the error happens +# the script will return 500 + print "Content-type: text/plain\n\n"; print no_such_func(); 1.1 modperl-2.0/ModPerl-Registry/t/cgi-bin/runtime_error_n_status_change.pl Index: runtime_error_n_status_change.pl =================================================================== my $r = shift; $r->status(404); $r->send_http_header('text/plain'); $r->print(no_such_func()); 1.1 modperl-2.0/ModPerl-Registry/t/cgi-bin/runtime_error_plus_body.pl Index: runtime_error_plus_body.pl =================================================================== # this script sends some body before the error happens, # so 200 OK is expected, followed by an error print "Content-type: text/plain\n\n"; print "some body"; print no_such_func();