Change Catalsyt _parse_attrs so that when sub attr handlers:
[catagits/Catalyst-Runtime.git] / t / aggregate / 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;
11 my $meta = Moose->init_meta( for_class => $name );
12 $meta->superclasses('Catalyst');
13 return $meta->name;
14}
15
16sub 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 29local %ENV = %ENV;
30
31# Remove all relevant env variables to avoid accidental fail
32foreach 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}