Test uri_for with path = 0
[catagits/Catalyst-Runtime.git] / t / psgi-log.t
index ce52bab..91a36dc 100644 (file)
@@ -1,3 +1,20 @@
+=head1 PROBLEM
+
+In https://github.com/plack/Plack/commit/cafa5db84921f020183a9c834fd6a4541e5a6b84
+chansen made a change to the FCGI handler in Plack, in which he replaced
+STDERR, STDOUT and STDIN with proper IO::Handle objects.
+
+The side effect of that change is that catalyst outputing logs on STDERR will
+no longer end up by default in the error log of the webserver when running
+under FCGI. This test tries to make sure we use the propper parts of the psgi
+environment when we output things from Catalyst::Log.
+
+There is one more "regression", and that is warnings. By using
+Catalyst::Plugin::LogWarnings, you also get those in the right place if this
+test passes :)
+
+=cut
+
 use strict;
 use warnings;
 no warnings 'once';
@@ -29,8 +46,10 @@ use HTTP::Request::Common;
     no Moose;
 }
 
+my $cmp = TestApp->debug ? '>=' : '==';
 
-subtest "psgi.errors" => sub{
+#subtest "psgi.errors" => sub
+{
 
     my $handle = MockHandle->new();
     my $app = builder {
@@ -50,14 +69,15 @@ subtest "psgi.errors" => sub{
 
     test_psgi $app, sub {
         my $cb = shift;
-        my $res = $cb->(GET "/log/debug");
+        my $res = $cb->(GET "/log/info");
         my @logs = $handle->logs;
-        is(scalar(@logs), 1, "one event output");
-        like($logs[0], qr/debug$/, "event matches test data");
+        cmp_ok(scalar(@logs), $cmp, 1, "psgi.errors: one event output");
+        like($logs[0], qr/info$/m, "psgi.errors: event matches test data") unless TestApp->debug;
     };
 };
 
-subtest "psgix.logger" => sub {
+#subtest "psgix.logger" => sub
+{
 
     my @logs;
     my $logger = sub {
@@ -77,9 +97,10 @@ subtest "psgix.logger" => sub {
 
     test_psgi $app, sub {
         my $cb = shift;
-        my $res = $cb->(GET "/log/debug");
-        is(scalar(@logs), 1, "one event logged");
-        is_deeply($logs[0], { level => 'debug', message => "debug" }, "right stuff");
+        my $res = $cb->(GET "/log/info");
+        cmp_ok(scalar(@logs), $cmp, 1, "psgix.logger: one event logged");
+        is(scalar(grep { $_->{level} eq 'info' and $_->{message} eq 'info' } @logs),
+           1, "psgix.logger: right stuff");
     };
 };