move handle_log_request logic into router
[p5sagit/Log-Contextual.git] / t / log.t
CommitLineData
7cec609c 1use strict;
2use warnings;
3
f11f9542 4use Log::Contextual qw{:log with_logger set_logger};
854003ec 5use Log::Contextual::SimpleLogger;
7cec609c 6use Test::More qw(no_plan);
ae9785e2 7
8my @levels = qw(debug trace warn info error fatal);
9
854003ec 10my $var1;
11my $var2;
12my $var3;
13my $var_logger1 = Log::Contextual::SimpleLogger->new({
14 levels => [qw(trace debug info warn error fatal)],
15 coderef => sub { $var1 = shift },
16});
17
18my $var_logger2 = Log::Contextual::SimpleLogger->new({
19 levels => [qw(trace debug info warn error fatal)],
20 coderef => sub { $var2 = shift },
21});
22
23my $var_logger3 = Log::Contextual::SimpleLogger->new({
24 levels => [qw(trace debug info warn error fatal)],
25 coderef => sub { $var3 = shift },
26});
7cec609c 27
3e3680ac 28SETLOGGER: {
29 set_logger(sub { $var_logger3 });
30 log_debug { 'set_logger' };
31 is( $var3, "[debug] set_logger\n", 'set logger works' );
32}
33
34SETLOGGERTWICE: {
35 my $foo;
36 local $SIG{__WARN__} = sub { $foo = shift };
37 set_logger(sub { $var_logger3 });
38 like(
39 $foo, qr/set_logger \(or -logger\) called more than once! This is a bad idea! at/,
40 'set_logger twice warns correctly'
41 );
42}
43
c19d7bee 44WITHLOGGER: {
98833ffb 45 with_logger sub { $var_logger2 } => sub {
7cec609c 46
98833ffb 47 with_logger $var_logger1 => sub {
c19d7bee 48 log_debug { 'nothing!' }
80c3e48b 49 };
c19d7bee 50 log_debug { 'frew!' };
2033c911 51
80c3e48b 52 };
2033c911 53
854003ec 54 is( $var1, "[debug] nothing!\n", 'inner scoped logger works' );
55 is( $var2, "[debug] frew!\n", 'outer scoped logger works' );
c19d7bee 56}
57
c19d7bee 58SETWITHLOGGER: {
98833ffb 59 with_logger $var_logger1 => sub {
0f7a70e7 60 log_debug { 'nothing again!' };
3e3680ac 61 # do this just so the following set_logger won't warn
62 local $SIG{__WARN__} = sub {};
0f7a70e7 63 set_logger(sub { $var_logger3 });
64 log_debug { 'this is a set inside a with' };
80c3e48b 65 };
c19d7bee 66
854003ec 67 is( $var1, "[debug] nothing again!\n",
c19d7bee 68 'inner scoped logger works after using set_logger'
69 );
70
854003ec 71 is( $var3, "[debug] this is a set inside a with\n",
0f7a70e7 72 'set inside with works'
73 );
74
c19d7bee 75 log_debug { 'frioux!' };
854003ec 76 is( $var3, "[debug] frioux!\n",
c19d7bee 77 q{set_logger's logger comes back after scoped logger}
78 );
2033c911 79}
f8c96d08 80
0f7a70e7 81VANILLA: {
ae9785e2 82 for (@levels) {
83 main->can("log_$_")->(sub { 'fiSMBoC' });
84 is( $var3, "[$_] fiSMBoC\n", "$_ works");
85
86 my @vars = main->can("log_$_")->(sub { 'fiSMBoC: ' . $_[1] }, qw{foo bar baz});
87 is( $var3, "[$_] fiSMBoC: bar\n", "log_$_ works with input");
88 ok( eq_array(\@vars, [qw{foo bar baz}]), "log_$_ passes data through correctly");
89
90 my $val = main->can("logS_$_")->(sub { 'fiSMBoC: ' . $_[0] }, 'foo');
91 is( $var3, "[$_] fiSMBoC: foo\n", "logS_$_ works with input");
92 is( $val, 'foo', "logS_$_ passes data through correctly");
93 }
0f7a70e7 94}
95
f8c96d08 96ok(!eval { Log::Contextual->import; 1 }, 'Blank Log::Contextual import dies');
ba793593 97