Commit | Line | Data |
812082c6 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More tests => 24; |
5 | use Test::Exception; |
6 | |
7 | use Catalyst (); |
8 | |
9 | sub mock_app { |
10 | my $name = shift; |
11 | my $meta = Moose->init_meta( for_class => $name ); |
12 | $meta->superclasses('Catalyst'); |
13 | return $meta->name; |
14 | } |
15 | |
16 | sub test_log_object { |
17 | my ($log, %expected) = @_; |
18 | foreach my $level (keys %expected) { |
19 | my $method_name = "is_$level"; |
20 | if ($expected{$level}) { |
21 | ok( $log->$method_name(), "Level $level on" ); |
22 | } |
23 | else { |
24 | ok( !$log->$method_name(), "Level $level off" ); |
25 | } |
26 | } |
27 | } |
28 | |
29 | local %ENV; # Ensure blank or someone, somewhere will fail.. |
30 | |
31 | { |
32 | my $app = mock_app('TestLogAppParseLevels'); |
33 | $app->setup_log('error,warn'); |
34 | ok !$app->debug, 'Not in debug mode'; |
35 | test_log_object($app->log, |
36 | fatal => 0, # WTF - I thought log levels were additive these days, |
37 | # or do I not understand the patch which pupported to make |
38 | # them so? |
39 | error => 1, |
40 | warn => 1, |
41 | info => 0, |
42 | debug => 0, |
43 | ); |
44 | } |
45 | { |
46 | local %ENV = ( CATALYST_DEBUG => 1 ); |
47 | my $app = mock_app('TestLogAppDebugEnvSet'); |
48 | $app->setup_log(''); |
49 | ok $app->debug, 'In debug mode'; |
50 | test_log_object($app->log, |
51 | fatal => 1, # Note, log levels _are_ seemingly additive if debug is on. |
52 | error => 1, # CRACK - someone has been smoking it. |
53 | warn => 1, |
54 | info => 1, |
55 | debug => 1, |
56 | ); |
57 | } |
58 | { |
59 | local %ENV = ( CATALYST_DEBUG => 0 ); |
60 | my $app = mock_app('TestLogAppDebugEnvUnset'); |
61 | $app->setup_log(''); |
62 | ok !$app->debug, 'Not In debug mode'; |
63 | test_log_object($app->log, |
64 | fatal => 0, |
65 | error => 0, |
66 | warn => 0, |
67 | info => 0, |
68 | debug => 0, |
69 | ); |
70 | } |
71 | { |
72 | my $app = mock_app('TestLogAppDebugOnly'); |
73 | $app->setup_log('debug'); |
74 | ok $app->debug, 'In debug mode'; |
75 | test_log_object($app->log, |
76 | fatal => 0, |
77 | error => 0, |
78 | warn => 0, |
79 | info => 0, |
80 | debug => 1, |
81 | ); |
82 | } |