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