X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flog.t;h=8303a432d6a2f466634d7ed037f3cd0f1684e3f1;hb=84d7d9ee2754784b80f49f2456a49429086821e3;hp=329576ff2d7999540d63446e715481d7703c51b5;hpb=ba793593bba0f4d1633814f3dab0479e3c4699f4;p=p5sagit%2FLog-Contextual.git diff --git a/t/log.t b/t/log.t index 329576f..8303a43 100644 --- a/t/log.t +++ b/t/log.t @@ -1,13 +1,46 @@ 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,112 +52,54 @@ 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', - 'set inside with works' - ); + 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'); - -}