Fix additive logging setup, and ergo Catalyst-Plugin-Devel-ModuleVersions
Tomas Doran [Fri, 2 Jan 2009 23:13:36 +0000 (23:13 +0000)]
lib/Catalyst.pm
t/unit_core_setup.t

index db307ab..cef7ac7 100644 (file)
@@ -2226,19 +2226,19 @@ or if the C<$CATALYST_DEBUG> environment variable is set to a true value.
 
 Note that if the log has already been setup, by either a previous call to
 C<setup_log> or by a call such as C<< __PACKAGE__->log( MyLogger->new ) >>,
-that this method won't actually set up the log.
+that this method won't actually set up the log object.
 
 =cut
 
 sub setup_log {
     my ( $class, $levels ) = @_;
 
-    my %levels;
+    $levels ||= '';
+    $levels =~ s/^\s+//;
+    $levels =~ s/\s+$//;
+    my %levels = map { $_ => 1 } split /\s*,\s*/, $levels || '';
+    
     unless ( $class->log ) {
-        $levels ||= '';
-        $levels =~ s/^\s+//;
-        $levels =~ s/\s+$//;
-        %levels = map { $_ => 1 } split /\s*,\s*/, $levels || '';
         $class->log( Catalyst::Log->new(keys %levels) );
     }
 
index c784c03..70b649e 100644 (file)
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 use Catalyst::Runtime;
 
-use Test::More tests => 18;
+use Test::More tests => 20;
 
 {
     # Silence the log.
@@ -46,3 +46,16 @@ ok $log->is_error,  'Errors should be enabled';
 ok $log->is_fatal,  'Fatal errors should be enabled';
 ok !$log->is_info,  'Info should be disabled';
 ok !$log->is_debug, 'Debugging should be disabled';
+
+TESTOWNLOGGER: {
+    package MyTestAppWithOwnLogger;
+    use base qw/Catalyst/;
+    use Test::MockObject;
+    my $log = Test::MockObject->new;
+    $log->set_false(qw/debug error fatal info warn/);
+    __PACKAGE__->log($log);
+    __PACKAGE__->setup('-Debug');
+}
+
+ok $c = MyTestAppWithOwnLogger->new, 'Get with own logger app object';
+ok $c->debug, '$c->debug is true';