Changelogging.
[catagits/Catalyst-Runtime.git] / t / unit_core_setup_log.t
CommitLineData
812082c6 1use strict;
2use warnings;
3
abf65c2a 4use Test::More tests => 30;
812082c6 5use Test::Exception;
6
7use Catalyst ();
8
9sub mock_app {
10 my $name = shift;
4cb5d29f 11 print "Setting up mock application: $name\n";
812082c6 12 my $meta = Moose->init_meta( for_class => $name );
13 $meta->superclasses('Catalyst');
14 return $meta->name;
15}
16
17sub 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
30local %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,
eaae9a92 37 fatal => 1,
812082c6 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,
e2422920 50 fatal => 1,
51 error => 1,
52 warn => 1,
53 info => 1,
812082c6 54 debug => 1,
55 );
56}
57{
58 local %ENV = ( CATALYST_DEBUG => 0 );
59 my $app = mock_app('TestLogAppDebugEnvUnset');
abf65c2a 60 $app->setup_log('warn');
61 ok !$app->debug, 'Not In debug mode';
62 test_log_object($app->log,
c72d2e24 63 fatal => 1,
64 error => 1,
abf65c2a 65 warn => 1,
66 info => 0,
67 debug => 0,
68 );
69}
70{
71 my $app = mock_app('TestLogAppEmptyString');
812082c6 72 $app->setup_log('');
73 ok !$app->debug, 'Not In debug mode';
c72d2e24 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 );
812082c6 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,
e2422920 88 fatal => 1,
89 error => 1,
90 warn => 1,
91 info => 1,
812082c6 92 debug => 1,
93 );
94}