Skip to content

Commit

Permalink
a few more Mojo::Log tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Mar 31, 2012
1 parent b6bcc42 commit f47d421
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 30 deletions.
43 changes: 19 additions & 24 deletions lib/Mojo/Log.pm
Expand Up @@ -8,19 +8,17 @@ use IO::File;
has handle => sub {
my $self = shift;

# Need a log file
unless ($self->path) {
binmode STDERR, ':utf8';
return \*STDERR;
# File
if (my $path = $self->path) {
croak qq/Can't open log file "$path": $!/
unless my $file = IO::File->new(">> $path");
binmode $file, ':utf8';
return $file;
}

# Append to file
my $path = $self->path;
croak qq/Can't open log file "$path": $!/
unless my $file = IO::File->new(">> $path");
binmode $file, ':utf8';

return $file;
# STDERR
binmode STDERR, ':utf8';
return \*STDERR;
};
has level => 'debug';
has 'path';
Expand All @@ -47,28 +45,26 @@ sub new {
}

# "Yes, I got the most! I win X-Mas!"
sub debug { shift->log('debug', @_) }
sub error { shift->log('error', @_) }
sub fatal { shift->log('fatal', @_) }
sub debug { shift->log(debug => @_) }
sub error { shift->log(error => @_) }
sub fatal { shift->log(fatal => @_) }

sub format {
my ($self, $level, @msgs) = @_;
return '[' . localtime(time) . "] [$level] " . join("\n", @msgs) . "\n";
}

sub info { shift->log('info', @_) }
sub info { shift->log(info => @_) }

sub is_debug { shift->is_level('debug') }
sub is_error { shift->is_level('error') }
sub is_fatal { shift->is_level('fatal') }
sub is_info { shift->is_level('info') }

sub is_level {
my ($self, $level) = @_;
return unless $level;
$level = lc $level;
my $current = $ENV{MOJO_LOG_LEVEL} || $self->level;
return $LEVEL->{$level} >= $LEVEL->{$current};
my $self = shift;
my $level = lc shift;
return $LEVEL->{$level} >= $LEVEL->{$ENV{MOJO_LOG_LEVEL} || $self->level};
}

sub is_warn { shift->is_level('warn') }
Expand All @@ -78,12 +74,11 @@ sub is_warn { shift->is_level('warn') }
sub log {
my $self = shift;
my $level = lc shift;
return $self unless $level && $self->is_level($level);
$self->emit(message => $level => @_);
return $self;
return $self unless $self->is_level($level);
return $self->emit(message => $level => @_);
}

sub warn { shift->log('warn', @_) }
sub warn { shift->log(warn => @_) }

1;
__END__
Expand Down
25 changes: 19 additions & 6 deletions t/mojo/log.t
@@ -1,6 +1,6 @@
use Mojo::Base -strict;

use Test::More tests => 30;
use Test::More tests => 44;

# "Don't let Krusty's death get you down, boy.
# People die all the time, just like that.
Expand Down Expand Up @@ -28,41 +28,54 @@ $log->level('error')->info('Again.');
is_deeply $messages, [qw/info Whatever./], 'right messages';
$log->fatal('Test', 123);
is_deeply $messages, [qw/info Whatever. fatal Test 123/], 'right messages';
$messages = [];
$log->level('debug')->log(info => 'Whatever.');
is_deeply $messages, [qw/info Whatever./], 'right messages';
$log->level('error')->log(info => 'Again.');
is_deeply $messages, [qw/info Whatever./], 'right messages';
$log->log(fatal => 'Test', 123);
is_deeply $messages, [qw/info Whatever. fatal Test 123/], 'right messages';

# "debug"
$log->level('debug');
is $log->level('debug')->level, 'debug', 'right level';
ok $log->is_level('debug'), '"debug" log level is active';
ok $log->is_level('info'), '"info" log level is active';
ok $log->is_debug, '"debug" log level is active';
ok $log->is_info, '"info" log level is active';
ok $log->is_warn, '"warn" log level is active';
ok $log->is_error, '"error" log level is active';
ok $log->is_fatal, '"fatal" log level is active';

# "info"
$log->level('info');
is $log->level('info')->level, 'info', 'right level';
ok !$log->is_level('debug'), '"debug" log level is inactive';
ok $log->is_level('info'), '"info" log level is active';
ok !$log->is_debug, '"debug" log level is inactive';
ok $log->is_info, '"info" log level is active';
ok $log->is_warn, '"warn" log level is active';
ok $log->is_error, '"error" log level is active';
ok $log->is_fatal, '"fatal" log level is active';

# "warn"
$log->level('warn');
is $log->level('warn')->level, 'warn', 'right level';
ok !$log->is_level('debug'), '"debug" log level is inactive';
ok !$log->is_level('info'), '"info" log level is inactive';
ok !$log->is_debug, '"debug" log level is inactive';
ok !$log->is_info, '"info" log level is inactive';
ok $log->is_warn, '"warn" log level is active';
ok $log->is_error, '"error" log level is active';
ok $log->is_fatal, '"fatal" log level is active';

# "error"
$log->level('error');
is $log->level('error')->level, 'error', 'right level';
ok !$log->is_debug, '"debug" log level is inactive';
ok !$log->is_info, '"info" log level is inactive';
ok !$log->is_warn, '"warn" log level is inactive';
ok $log->is_error, '"error" log level is active';
ok $log->is_fatal, '"fatal" log level is active';

# "fatal"
$log->level('fatal');
is $log->level('fatal')->level, 'fatal', 'right level';
ok !$log->is_debug, '"debug" log level is inactive';
ok !$log->is_info, '"info" log level is inactive';
ok !$log->is_warn, '"warn" log level is inactive';
Expand Down

0 comments on commit f47d421

Please sign in to comment.