silence warnings in tests
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_setup_log.t
CommitLineData
812082c6 1use strict;
2use warnings;
3
abf65c2a 4use Test::More tests => 30;
812082c6 5
6use Catalyst ();
7
8sub mock_app {
9 my $name = shift;
10 my $meta = Moose->init_meta( for_class => $name );
11 $meta->superclasses('Catalyst');
53c7cc10 12
13 $meta->add_after_method_modifier('log', sub {
14 my ($self, $log) = @_;
15 if ($log) {
16 open my $err_fh, '>', \(my $err_out)
17 or die 'unable to open in memory buffer';
18 $log->psgienv({ 'psgi.errors' => $err_fh });
19 }
20 });
21
22 return $name;
812082c6 23}
24
25sub test_log_object {
26 my ($log, %expected) = @_;
27 foreach my $level (keys %expected) {
28 my $method_name = "is_$level";
29 if ($expected{$level}) {
30 ok( $log->$method_name(), "Level $level on" );
31 }
32 else {
33 ok( !$log->$method_name(), "Level $level off" );
34 }
35 }
36}
37
803210fa 38local %ENV = %ENV;
39
40# Remove all relevant env variables to avoid accidental fail
41foreach my $name (grep { /^(CATALYST|TESTAPP)/ } keys %ENV) {
42 delete $ENV{$name};
43}
812082c6 44
45{
803210fa 46 my $app = mock_app('TestAppParseLogLevels');
812082c6 47 $app->setup_log('error,warn');
48 ok !$app->debug, 'Not in debug mode';
49 test_log_object($app->log,
eaae9a92 50 fatal => 1,
812082c6 51 error => 1,
52 warn => 1,
53 info => 0,
54 debug => 0,
55 );
56}
57{
803210fa 58 local %ENV = %ENV;
59 $ENV{CATALYST_DEBUG} = 1;
60 my $app = mock_app('TestAppLogDebugEnvSet');
812082c6 61 $app->setup_log('');
62 ok $app->debug, 'In debug mode';
63 test_log_object($app->log,
e2422920 64 fatal => 1,
65 error => 1,
66 warn => 1,
67 info => 1,
812082c6 68 debug => 1,
69 );
70}
71{
803210fa 72 local %ENV = %ENV;
73 $ENV{CATALYST_DEBUG} = 0;
74 my $app = mock_app('TestAppLogDebugEnvUnset');
abf65c2a 75 $app->setup_log('warn');
76 ok !$app->debug, 'Not In debug mode';
77 test_log_object($app->log,
c72d2e24 78 fatal => 1,
79 error => 1,
abf65c2a 80 warn => 1,
81 info => 0,
82 debug => 0,
83 );
84}
85{
803210fa 86 my $app = mock_app('TestAppLogEmptyString');
812082c6 87 $app->setup_log('');
88 ok !$app->debug, 'Not In debug mode';
3be47528 89 # Note that by default, you get _all_ the log levels turned on
c72d2e24 90 test_log_object($app->log,
91 fatal => 1,
92 error => 1,
93 warn => 1,
94 info => 1,
3be47528 95 debug => 1,
c72d2e24 96 );
812082c6 97}
98{
803210fa 99 my $app = mock_app('TestAppLogDebugOnly');
812082c6 100 $app->setup_log('debug');
101 ok $app->debug, 'In debug mode';
102 test_log_object($app->log,
e2422920 103 fatal => 1,
104 error => 1,
105 warn => 1,
106 info => 1,
812082c6 107 debug => 1,
108 );
109}