Commit | Line | Data |
7cec609c |
1 | use strict; |
2 | use warnings; |
3 | |
f11f9542 |
4 | use Log::Contextual qw{:log with_logger set_logger}; |
854003ec |
5 | use Log::Contextual::SimpleLogger; |
7cec609c |
6 | use Test::More qw(no_plan); |
ae9785e2 |
7 | |
8 | my @levels = qw(debug trace warn info error fatal); |
9 | |
854003ec |
10 | my $var1; |
11 | my $var2; |
12 | my $var3; |
13 | my $var_logger1 = Log::Contextual::SimpleLogger->new({ |
489f71b2 |
14 | levels => [qw(trace debug info warn error fatal)], |
15 | coderef => sub { $var1 = shift }, |
854003ec |
16 | }); |
17 | |
18 | my $var_logger2 = Log::Contextual::SimpleLogger->new({ |
489f71b2 |
19 | levels => [qw(trace debug info warn error fatal)], |
20 | coderef => sub { $var2 = shift }, |
854003ec |
21 | }); |
22 | |
23 | my $var_logger3 = Log::Contextual::SimpleLogger->new({ |
489f71b2 |
24 | levels => [qw(trace debug info warn error fatal)], |
25 | coderef => sub { $var3 = shift }, |
854003ec |
26 | }); |
7cec609c |
27 | |
3e3680ac |
28 | SETLOGGER: { |
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 | |
34 | SETLOGGERTWICE: { |
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 |
45 | WITHLOGGER: { |
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 |
59 | SETWITHLOGGER: { |
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 |
85 | VANILLA: { |
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 |
104 | ok(!eval { Log::Contextual->import; 1 }, 'Blank Log::Contextual import dies'); |
ba793593 |
105 | |