Commit | Line | Data |
812082c6 |
1 | use strict; |
2 | use warnings; |
3 | |
abf65c2a |
4 | use Test::More tests => 30; |
812082c6 |
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 | |
803210fa |
29 | local %ENV = %ENV; |
30 | |
31 | # Remove all relevant env variables to avoid accidental fail |
32 | foreach my $name (grep { /^(CATALYST|TESTAPP)/ } keys %ENV) { |
33 | delete $ENV{$name}; |
34 | } |
812082c6 |
35 | |
36 | { |
803210fa |
37 | my $app = mock_app('TestAppParseLogLevels'); |
812082c6 |
38 | $app->setup_log('error,warn'); |
39 | ok !$app->debug, 'Not in debug mode'; |
40 | test_log_object($app->log, |
eaae9a92 |
41 | fatal => 1, |
812082c6 |
42 | error => 1, |
43 | warn => 1, |
44 | info => 0, |
45 | debug => 0, |
46 | ); |
47 | } |
48 | { |
803210fa |
49 | local %ENV = %ENV; |
50 | $ENV{CATALYST_DEBUG} = 1; |
51 | my $app = mock_app('TestAppLogDebugEnvSet'); |
812082c6 |
52 | $app->setup_log(''); |
53 | ok $app->debug, 'In debug mode'; |
54 | test_log_object($app->log, |
e2422920 |
55 | fatal => 1, |
56 | error => 1, |
57 | warn => 1, |
58 | info => 1, |
812082c6 |
59 | debug => 1, |
60 | ); |
61 | } |
62 | { |
803210fa |
63 | local %ENV = %ENV; |
64 | $ENV{CATALYST_DEBUG} = 0; |
65 | my $app = mock_app('TestAppLogDebugEnvUnset'); |
abf65c2a |
66 | $app->setup_log('warn'); |
67 | ok !$app->debug, 'Not In debug mode'; |
68 | test_log_object($app->log, |
c72d2e24 |
69 | fatal => 1, |
70 | error => 1, |
abf65c2a |
71 | warn => 1, |
72 | info => 0, |
73 | debug => 0, |
74 | ); |
75 | } |
76 | { |
803210fa |
77 | my $app = mock_app('TestAppLogEmptyString'); |
812082c6 |
78 | $app->setup_log(''); |
79 | ok !$app->debug, 'Not In debug mode'; |
c72d2e24 |
80 | # Note that by default, you get _all_ the log levels turned on |
81 | test_log_object($app->log, |
82 | fatal => 1, |
83 | error => 1, |
84 | warn => 1, |
85 | info => 1, |
86 | debug => 1, |
87 | ); |
812082c6 |
88 | } |
89 | { |
803210fa |
90 | my $app = mock_app('TestAppLogDebugOnly'); |
812082c6 |
91 | $app->setup_log('debug'); |
92 | ok $app->debug, 'In debug mode'; |
93 | test_log_object($app->log, |
e2422920 |
94 | fatal => 1, |
95 | error => 1, |
96 | warn => 1, |
97 | info => 1, |
812082c6 |
98 | debug => 1, |
99 | ); |
100 | } |