warn pre-start() errors
authorMischa POSLAWSKY <perl@shiar.org>
Wed, 4 Jun 2008 22:56:25 +0000 (22:56 +0000)
committerMischa POSLAWSKY <perl@shiar.org>
Wed, 4 Jun 2008 22:56:25 +0000 (22:56 +0000)
Early warnings (cgi 403/404) should warn instead of print to STDERR.
This allows them to be handled by $SIG{__WARN__} (usually not set, but
used in tests).

lib/PLP/Backend/CGI.pm
t/50-cgi.t

index e952c5a0796dcf27c302fefd5be00d0e7d62be25..3acf63d9de9269db611366c5d961860699248a81 100644 (file)
@@ -3,7 +3,7 @@ package PLP::Backend::CGI;
 use strict;
 use warnings;
 
-our $VERSION = '1.02';
+our $VERSION = '1.03';
 
 use PLP;
 
@@ -20,7 +20,7 @@ sub init {
                my $path_info = '';
                while (not -f $path) {
                        if (not $path =~ s/(\/+[^\/]*)$//) {
-                               printf STDERR "PLP: Not found: $path$path_info ($ENV{REQUEST_URI})\n";
+                               warn "PLP: Not found: $path$path_info ($ENV{REQUEST_URI})\n";
                                PLP::error(undef, 404);
                                return;
                        }
@@ -35,7 +35,7 @@ sub init {
                $ENV{SCRIPT_NAME} = $rel;
        }
        elsif (not -f $ENV{SCRIPT_FILENAME}) {
-               print STDERR "PLP: Not found: $ENV{SCRIPT_FILENAME} ($ENV{REQUEST_URI})\n";
+               warn "PLP: Not found: $ENV{SCRIPT_FILENAME} ($ENV{REQUEST_URI})\n";
                PLP::error(undef, 404);
                return;
        }
@@ -43,7 +43,7 @@ sub init {
        $ENV{"PLP_$_"} = $ENV{"SCRIPT_$_"} for qw/NAME FILENAME/;
 
        if (not -r $ENV{PLP_FILENAME}) {
-               print STDERR "PLP: Can't read: $ENV{PLP_FILENAME} ($ENV{REQUEST_URI})\n";
+               warn "PLP: Can't read: $ENV{PLP_FILENAME} ($ENV{REQUEST_URI})\n";
                PLP::error(undef, 403);
                return;
        }
index d04e4509593c4e679a40193ddee266293bb2cb2e..bf60143f59edf38044528cefba344d8e80e27522 100644 (file)
@@ -37,6 +37,7 @@ sub plp_is {
 
        close STDOUT;
        open STDOUT, '>', \my $output;  # STDOUT buffered to scalar
+       select STDOUT;  # output before start() (which selects PLPOUT)
        eval {
                local $SIG{__WARN__} = sub { print $_[0] }; # enables warnings
                PLP::everything();
@@ -178,6 +179,7 @@ SKIP: {
 chmod 0244, $testfile or skip("changed permissions", 1);
 plp_is('permission denied', undef, <<TEST);
 Content-Type: text/html
+PLP: Can't read: $base/$testfile (/$testfile/test/123)
 Status: 403
 
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
@@ -195,6 +197,7 @@ chmod 0644, $testfile;
 $ENV{PATH_TRANSLATED} = "$base/missinginclude/test/123";
 plp_is('not found', undef, <<TEST);
 Content-Type: text/html
+PLP: Not found: $base/missinginclude/test/123 (/$testfile/test/123)
 Status: 404
 
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">