X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Fpsgi-log.t;h=91a36dcd6d7deab93e331db31da713dbf175e631;hp=ce52babd619705982c117b62449e9d1d73ce0513;hb=7064f69b1dfb59d1f3bad647b2097d0320acce8a;hpb=2d5279cd7e404e0c4f6d4fc985414f8d0cd9022b diff --git a/t/psgi-log.t b/t/psgi-log.t index ce52bab..91a36dc 100644 --- a/t/psgi-log.t +++ b/t/psgi-log.t @@ -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"); }; };