X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flog.t;h=ea0734d05ac00207eeb7dba87d788bd20a5fa13d;hb=e7b182828c58ebc7f661fc7cd99e96bc69922228;hp=df3cd171ab5c7a856b8db639c0483f41dd929f66;hpb=3424b376b098909bcf9439b71d685dc8b6c6bd3d;p=p5sagit%2FLog-Contextual.git diff --git a/t/log.t b/t/log.t index df3cd17..ea0734d 100644 --- a/t/log.t +++ b/t/log.t @@ -1,13 +1,45 @@ use strict; use warnings; -use lib 't/lib'; -use VarLogger; use Log::Contextual qw{:log with_logger set_logger}; +use Log::Contextual::SimpleLogger; use Test::More qw(no_plan); -my $var_logger1 = VarLogger->new; -my $var_logger2 = VarLogger->new; -my $var_logger3 = VarLogger->new; + +my @levels = qw(debug trace warn info error fatal); + +my $var1; +my $var2; +my $var3; +my $var_logger1 = Log::Contextual::SimpleLogger->new({ + levels => [qw(trace debug info warn error fatal)], + coderef => sub { $var1 = shift }, +}); + +my $var_logger2 = Log::Contextual::SimpleLogger->new({ + levels => [qw(trace debug info warn error fatal)], + coderef => sub { $var2 = shift }, +}); + +my $var_logger3 = Log::Contextual::SimpleLogger->new({ + levels => [qw(trace debug info warn error fatal)], + coderef => sub { $var3 = shift }, +}); + +SETLOGGER: { + set_logger(sub { $var_logger3 }); + log_debug { 'set_logger' }; + is( $var3, "[debug] set_logger\n", 'set logger works' ); +} + +SETLOGGERTWICE: { + my $foo; + local $SIG{__WARN__} = sub { $foo = shift }; + set_logger(sub { $var_logger3 }); + like( + $foo, qr/set_logger \(or -logger\) called more than once! This is a bad idea! at/, + 'set_logger twice warns correctly' + ); +} WITHLOGGER: { with_logger sub { $var_logger2 } => sub { @@ -19,113 +51,47 @@ WITHLOGGER: { }; - is( $var_logger1->var, 'dnothing!', 'inner scoped logger works' ); - is( $var_logger2->var, 'dfrew!', 'outer scoped logger works' ); -} - -SETLOGGER: { - set_logger(sub { $var_logger3 }); - log_debug { 'set_logger' }; - is( $var_logger3->var, 'dset_logger', 'set logger works' ); + is( $var1, "[debug] nothing!\n", 'inner scoped logger works' ); + is( $var2, "[debug] frew!\n", 'outer scoped logger works' ); } SETWITHLOGGER: { with_logger $var_logger1 => sub { log_debug { 'nothing again!' }; + # do this just so the following set_logger won't warn + local $SIG{__WARN__} = sub {}; set_logger(sub { $var_logger3 }); log_debug { 'this is a set inside a with' }; }; - is( $var_logger1->var, 'dnothing again!', + is( $var1, "[debug] nothing again!\n", 'inner scoped logger works after using set_logger' ); - is( $var_logger3->var, 'dthis is a set inside a with', + is( $var3, "[debug] this is a set inside a with\n", 'set inside with works' ); log_debug { 'frioux!' }; - is( $var_logger3->var, 'dfrioux!', + is( $var3, "[debug] frioux!\n", q{set_logger's logger comes back after scoped logger} ); } VANILLA: { - log_trace { 'fiSMBoC' }; - is( $var_logger3->var, 'tfiSMBoC', 'trace works'); - - log_debug { 'fiSMBoC' }; - is( $var_logger3->var, 'dfiSMBoC', 'debug works'); - - log_info { 'fiSMBoC' }; - is( $var_logger3->var, 'ifiSMBoC', 'info works'); - - log_warn { 'fiSMBoC' }; - is( $var_logger3->var, 'wfiSMBoC', 'warn works'); - - log_error { 'fiSMBoC' }; - is( $var_logger3->var, 'efiSMBoC', 'error works'); - - log_fatal { 'fiSMBoC' }; - is( $var_logger3->var, 'ffiSMBoC', 'fatal works'); - + for (@levels) { + main->can("log_$_")->(sub { 'fiSMBoC' }); + is( $var3, "[$_] fiSMBoC\n", "$_ works"); + + my @vars = main->can("log_$_")->(sub { 'fiSMBoC: ' . $_[1] }, qw{foo bar baz}); + is( $var3, "[$_] fiSMBoC: bar\n", "log_$_ works with input"); + ok( eq_array(\@vars, [qw{foo bar baz}]), "log_$_ passes data through correctly"); + + my $val = main->can("logS_$_")->(sub { 'fiSMBoC: ' . $_[0] }, 'foo'); + is( $var3, "[$_] fiSMBoC: foo\n", "logS_$_ works with input"); + is( $val, 'foo', "logS_$_ passes data through correctly"); + } } ok(!eval { Log::Contextual->import; 1 }, 'Blank Log::Contextual import dies'); -PASSTHROUGH: { - my @vars; - - @vars = log_trace { 'fiSMBoC: ' . $_[1] } qw{foo bar baz}; - is( $var_logger3->var, 'tfiSMBoC: bar', 'log_trace works with input'); - ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_trace passes data through correctly'); - - @vars = log_debug { 'fiSMBoC: ' . $_[1] } qw{foo bar baz}; - is( $var_logger3->var, 'dfiSMBoC: bar', 'log_debug works with input'); - ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_debug passes data through correctly'); - - @vars = log_info { 'fiSMBoC: ' . $_[1] } qw{foo bar baz}; - is( $var_logger3->var, 'ifiSMBoC: bar', 'log_info works with input'); - ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_info passes data through correctly'); - - @vars = log_warn { 'fiSMBoC: ' . $_[1] } qw{foo bar baz}; - is( $var_logger3->var, 'wfiSMBoC: bar', 'log_warn works with input'); - ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_warn passes data through correctly'); - - @vars = log_error { 'fiSMBoC: ' . $_[1] } qw{foo bar baz}; - is( $var_logger3->var, 'efiSMBoC: bar', 'log_error works with input'); - ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_error passes data through correctly'); - - @vars = log_fatal { 'fiSMBoC: ' . $_[1] } qw{foo bar baz}; - is( $var_logger3->var, 'ffiSMBoC: bar', 'log_fatal works with input'); - ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_fatal passes data through correctly'); - - - - my $val; - $val = logS_trace { 'fiSMBoC: ' . $_[0] } 'foo'; - is( $var_logger3->var, 'tfiSMBoC: foo', 'logS_trace works with input'); - is( $val, 'foo', 'logS_trace passes data through correctly'); - - $val = logS_debug { 'fiSMBoC: ' . $_[0] } 'foo'; - is( $var_logger3->var, 'dfiSMBoC: foo', 'logS_debug works with input'); - is( $val, 'foo', 'logS_debug passes data through correctly'); - - $val = logS_info { 'fiSMBoC: ' . $_[0] } 'foo'; - is( $var_logger3->var, 'ifiSMBoC: foo', 'logS_info works with input'); - is( $val, 'foo', 'logS_info passes data through correctly'); - - $val = logS_warn { 'fiSMBoC: ' . $_[0] } 'foo'; - is( $var_logger3->var, 'wfiSMBoC: foo', 'logS_warn works with input'); - is( $val, 'foo', 'logS_warn passes data through correctly'); - - $val = logS_error { 'fiSMBoC: ' . $_[0] } 'foo'; - is( $var_logger3->var, 'efiSMBoC: foo', 'logS_error works with input'); - is( $val, 'foo', 'logS_error passes data through correctly'); - - $val = logS_fatal { 'fiSMBoC: ' . $_[0] } 'foo'; - is( $var_logger3->var, 'ffiSMBoC: foo', 'logS_fatal works with input'); - is( $val, 'foo', 'logS_fatal passes data through correctly'); - - ok(!eval "logS_error { 'frew' } 'bar', 'baz'; 1", 'logS_$level dies from too many args'); -}