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) );
}
use warnings;
use Catalyst::Runtime;
-use Test::More tests => 18;
+use Test::More tests => 20;
{
# Silence the log.
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';