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