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