add tests for log passthrough
[p5sagit/Log-Contextual.git] / t / log.t
1 use strict;
2 use warnings;
3
4 use lib 't/lib';
5 use VarLogger;
6 use Log::Contextual qw{:log with_logger set_logger};
7 use Test::More qw(no_plan);
8 my $var_logger1 = VarLogger->new;
9 my $var_logger2 = VarLogger->new;
10 my $var_logger3 = VarLogger->new;
11
12 WITHLOGGER: {
13    with_logger sub { $var_logger2 } => sub {
14
15       with_logger $var_logger1 => sub {
16          log_debug { 'nothing!' }
17       };
18       log_debug { 'frew!' };
19
20    };
21
22    is( $var_logger1->var, 'dnothing!', 'inner scoped logger works' );
23    is( $var_logger2->var, 'dfrew!', 'outer scoped logger works' );
24 }
25
26 SETLOGGER: {
27    set_logger(sub { $var_logger3 });
28    log_debug { 'set_logger' };
29    is( $var_logger3->var, 'dset_logger', 'set logger works' );
30 }
31
32 SETWITHLOGGER: {
33    with_logger $var_logger1 => sub {
34       log_debug { 'nothing again!' };
35       set_logger(sub { $var_logger3 });
36       log_debug { 'this is a set inside a with' };
37    };
38
39    is( $var_logger1->var, 'dnothing again!',
40       'inner scoped logger works after using set_logger'
41    );
42
43    is( $var_logger3->var, 'dthis is a set inside a with',
44       'set inside with works'
45    );
46
47    log_debug { 'frioux!' };
48    is( $var_logger3->var, 'dfrioux!',
49       q{set_logger's logger comes back after scoped logger}
50    );
51 }
52
53 VANILLA: {
54    log_trace { 'fiSMBoC' };
55    is( $var_logger3->var, 'tfiSMBoC', 'trace works');
56
57    log_debug { 'fiSMBoC' };
58    is( $var_logger3->var, 'dfiSMBoC', 'debug works');
59
60    log_info { 'fiSMBoC' };
61    is( $var_logger3->var, 'ifiSMBoC', 'info works');
62
63    log_warn { 'fiSMBoC' };
64    is( $var_logger3->var, 'wfiSMBoC', 'warn works');
65
66    log_error { 'fiSMBoC' };
67    is( $var_logger3->var, 'efiSMBoC', 'error works');
68
69    log_fatal { 'fiSMBoC' };
70    is( $var_logger3->var, 'ffiSMBoC', 'fatal works');
71
72 }
73
74 ok(!eval { Log::Contextual->import; 1 }, 'Blank Log::Contextual import dies');
75
76 PASSTHROUGH: {
77    my @vars;
78
79    @vars = log_trace { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
80    is( $var_logger3->var, 'tfiSMBoC: bar', 'log_trace works with input');
81    ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_trace passes data through correctly');
82
83    @vars = log_debug { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
84    is( $var_logger3->var, 'dfiSMBoC: bar', 'log_debug works with input');
85    ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_debug passes data through correctly');
86
87    @vars = log_info { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
88    is( $var_logger3->var, 'ifiSMBoC: bar', 'log_info works with input');
89    ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_info passes data through correctly');
90
91    @vars = log_warn { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
92    is( $var_logger3->var, 'wfiSMBoC: bar', 'log_warn works with input');
93    ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_warn passes data through correctly');
94
95    @vars = log_error { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
96    is( $var_logger3->var, 'efiSMBoC: bar', 'log_error works with input');
97    ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_error passes data through correctly');
98
99    @vars = log_fatal { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
100    is( $var_logger3->var, 'ffiSMBoC: bar', 'log_fatal works with input');
101    ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_fatal passes data through correctly');
102
103
104
105    my $val;
106    $val = logS_trace { 'fiSMBoC: ' . $_[0] } 'foo';
107    is( $var_logger3->var, 'tfiSMBoC: foo', 'logS_trace works with input');
108    is( $val, 'foo', 'logS_trace passes data through correctly');
109
110    $val = logS_debug { 'fiSMBoC: ' . $_[0] } 'foo';
111    is( $var_logger3->var, 'dfiSMBoC: foo', 'logS_debug works with input');
112    is( $val, 'foo', 'logS_debug passes data through correctly');
113
114    $val = logS_info { 'fiSMBoC: ' . $_[0] } 'foo';
115    is( $var_logger3->var, 'ifiSMBoC: foo', 'logS_info works with input');
116    is( $val, 'foo', 'logS_info passes data through correctly');
117
118    $val = logS_warn { 'fiSMBoC: ' . $_[0] } 'foo';
119    is( $var_logger3->var, 'wfiSMBoC: foo', 'logS_warn works with input');
120    is( $val, 'foo', 'logS_warn passes data through correctly');
121
122    $val = logS_error { 'fiSMBoC: ' . $_[0] } 'foo';
123    is( $var_logger3->var, 'efiSMBoC: foo', 'logS_error works with input');
124    is( $val, 'foo', 'logS_error passes data through correctly');
125
126    $val = logS_fatal { 'fiSMBoC: ' . $_[0] } 'foo';
127    is( $var_logger3->var, 'ffiSMBoC: foo', 'logS_fatal works with input');
128    is( $val, 'foo', 'logS_fatal passes data through correctly');
129
130 }