nicer action sorting for Path
[catagits/Catalyst-Runtime.git] / t / unit_core_setup_log.t
1 use strict;
2 use warnings;
3
4 use Test::More tests => 30;
5 use Test::Exception;
6
7 use Catalyst ();
8
9 sub mock_app {
10     my $name = shift;
11     print "Setting up mock application: $name\n";
12     my $meta = Moose->init_meta( for_class => $name );
13     $meta->superclasses('Catalyst');
14     return $meta->name;
15 }
16
17 sub test_log_object {
18     my ($log, %expected) = @_;
19     foreach my $level (keys %expected) {
20         my $method_name = "is_$level";
21         if ($expected{$level}) {
22             ok( $log->$method_name(), "Level $level on" );
23         }
24         else {
25             ok( !$log->$method_name(), "Level $level off" );
26         }
27     }
28 }
29
30 local %ENV; # Ensure blank or someone, somewhere will fail..
31
32 {
33     my $app = mock_app('TestLogAppParseLevels');
34     $app->setup_log('error,warn');
35     ok !$app->debug, 'Not in debug mode';
36     test_log_object($app->log,
37         fatal => 1,
38         error => 1,
39         warn => 1,
40         info => 0,
41         debug => 0,
42     );
43 }
44 {
45     local %ENV = ( CATALYST_DEBUG => 1 );
46     my $app = mock_app('TestLogAppDebugEnvSet');
47     $app->setup_log('');
48     ok $app->debug, 'In debug mode';
49     test_log_object($app->log,
50         fatal => 1,
51         error => 1,
52         warn => 1,
53         info => 1,
54         debug => 1,
55     );
56 }
57 {
58     local %ENV = ( CATALYST_DEBUG => 0 );
59     my $app = mock_app('TestLogAppDebugEnvUnset');
60     $app->setup_log('warn');
61     ok !$app->debug, 'Not In debug mode';
62     test_log_object($app->log,
63         fatal => 1,
64         error => 1,
65         warn => 1,
66         info => 0,
67         debug => 0,
68     );
69 }
70 {
71     my $app = mock_app('TestLogAppEmptyString');
72     $app->setup_log('');
73     ok !$app->debug, 'Not In debug mode';
74     # Note that by default, you get _all_ the log levels turned on
75     test_log_object($app->log,
76         fatal => 1,
77         error => 1,
78         warn => 1,
79         info => 1,
80         debug => 1,
81     );
82 }
83 {
84     my $app = mock_app('TestLogAppDebugOnly');
85     $app->setup_log('debug');
86     ok $app->debug, 'In debug mode';
87     test_log_object($app->log,
88         fatal => 1,
89         error => 1,
90         warn => 1,
91         info => 1,
92         debug => 1,
93     );
94 }