Dont add \n for psgi logs(?)
[catagits/Catalyst-Runtime.git] / t / psgi-log.t
CommitLineData
2d5279cd 1use strict;
2use warnings;
3no warnings 'once';
4use FindBin;
5use lib "$FindBin::Bin/lib";
6
7use Test::More;
8
9use File::Spec;
10use File::Temp qw/ tempdir /;
11
12use TestApp;
13
14use Plack::Builder;
15use Plack::Test;
16use HTTP::Request::Common;
17
18{
19 package MockHandle;
20 use Moose;
21
22 has 'log' => (is => 'ro', isa => 'ArrayRef', traits => ['Array'], default => sub { [] },
23 handles => {
24 'logs' => 'elements',
25 'print' => 'push',
26 }
27 );
28
29 no Moose;
30}
31
32
33subtest "psgi.errors" => sub{
34
35 my $handle = MockHandle->new();
36 my $app = builder {
37
38 enable sub {
39 my $app = shift;
40 sub {
41 my $env = shift;
42 $env->{'psgi.errors'} = $handle;
43 my $res = $app->($env);
44 return $res;
45 };
46 };
47 TestApp->psgi_app;
48 };
49
50
51 test_psgi $app, sub {
52 my $cb = shift;
53 my $res = $cb->(GET "/log/debug");
54 my @logs = $handle->logs;
55 is(scalar(@logs), 1, "one event output");
56 like($logs[0], qr/debug$/, "event matches test data");
57 };
58};
59
60subtest "psgix.logger" => sub {
61
62 my @logs;
63 my $logger = sub {
64 push(@logs, @_);
65 };
66 my $app = builder {
67 enable sub {
68 my $app = shift;
69 sub {
70 my $env = shift;
71 $env->{'psgix.logger'} = $logger;
72 $app->($env);
73 };
74 };
75 TestApp->psgi_app;
76 };
77
78 test_psgi $app, sub {
79 my $cb = shift;
80 my $res = $cb->(GET "/log/debug");
81 is(scalar(@logs), 1, "one event logged");
82 is_deeply($logs[0], { level => 'debug', message => "debug" }, "right stuff");
83 };
84};
85
86
87
88done_testing;