namespace ::Easy::Default
[p5sagit/Log-Contextual.git] / t / warnlogger.t
1 use strict;
2 use warnings;
3
4 use Log::Contextual::WarnLogger;
5 use Log::Contextual qw{:log set_logger} => -logger =>
6   Log::Contextual::WarnLogger->new({env_prefix => 'FOO'});
7 use Test::More qw(no_plan);
8 my $l = Log::Contextual::WarnLogger->new({env_prefix => 'BAR'});
9
10 {
11    local $ENV{BAR_TRACE} = 0;
12    local $ENV{BAR_DEBUG} = 1;
13    local $ENV{BAR_INFO}  = 0;
14    local $ENV{BAR_WARN}  = 0;
15    local $ENV{BAR_ERROR} = 0;
16    local $ENV{BAR_FATAL} = 0;
17    ok(!$l->is_trace, 'is_trace is false on WarnLogger');
18    ok($l->is_debug,  'is_debug is true on WarnLogger');
19    ok(!$l->is_info,  'is_info is false on WarnLogger');
20    ok(!$l->is_warn,  'is_warn is false on WarnLogger');
21    ok(!$l->is_error, 'is_error is false on WarnLogger');
22    ok(!$l->is_fatal, 'is_fatal is false on WarnLogger');
23 }
24
25 {
26    local $ENV{BAR_UPTO} = 'TRACE';
27
28    ok($l->is_trace, 'is_trace is true on WarnLogger');
29    ok($l->is_debug, 'is_debug is true on WarnLogger');
30    ok($l->is_info,  'is_info is true on WarnLogger');
31    ok($l->is_warn,  'is_warn is true on WarnLogger');
32    ok($l->is_error, 'is_error is true on WarnLogger');
33    ok($l->is_fatal, 'is_fatal is true on WarnLogger');
34 }
35
36 {
37    local $ENV{BAR_UPTO} = 'warn';
38
39    ok(!$l->is_trace, 'is_trace is false on WarnLogger');
40    ok(!$l->is_debug, 'is_debug is false on WarnLogger');
41    ok(!$l->is_info,  'is_info is false on WarnLogger');
42    ok($l->is_warn,   'is_warn is true on WarnLogger');
43    ok($l->is_error,  'is_error is true on WarnLogger');
44    ok($l->is_fatal,  'is_fatal is true on WarnLogger');
45 }
46
47 {
48    local $ENV{FOO_TRACE} = 0;
49    local $ENV{FOO_DEBUG} = 1;
50    local $ENV{FOO_INFO}  = 0;
51    local $ENV{FOO_WARN}  = 0;
52    local $ENV{FOO_ERROR} = 0;
53    local $ENV{FOO_FATAL} = 0;
54    ok(
55       eval {
56          log_trace { die 'this should live' };
57          1
58       },
59       'trace does not get called'
60    );
61    ok(
62       !eval {
63          log_debug { die 'this should die' };
64          1
65       },
66       'debug gets called'
67    );
68    ok(
69       eval {
70          log_info { die 'this should live' };
71          1
72       },
73       'info does not get called'
74    );
75    ok(
76       eval {
77          log_warn { die 'this should live' };
78          1
79       },
80       'warn does not get called'
81    );
82    ok(
83       eval {
84          log_error { die 'this should live' };
85          1
86       },
87       'error does not get called'
88    );
89    ok(
90       eval {
91          log_fatal { die 'this should live' };
92          1
93       },
94       'fatal does not get called'
95    );
96 }
97
98 {
99    local $ENV{FOO_TRACE} = 1;
100    local $ENV{FOO_DEBUG} = 1;
101    local $ENV{FOO_INFO}  = 1;
102    local $ENV{FOO_WARN}  = 1;
103    local $ENV{FOO_ERROR} = 1;
104    local $ENV{FOO_FATAL} = 1;
105    my $cap;
106    local $SIG{__WARN__} = sub { $cap = shift };
107
108    log_debug { 'frew' };
109    is($cap, "[debug] frew\n", 'WarnLogger outputs to STDERR correctly');
110    log_trace { 'trace' };
111    is($cap, "[trace] trace\n", 'trace renders correctly');
112    log_debug { 'debug' };
113    is($cap, "[debug] debug\n", 'debug renders correctly');
114    log_info { 'info' };
115    is($cap, "[info] info\n", 'info renders correctly');
116    log_warn { 'warn' };
117    is($cap, "[warn] warn\n", 'warn renders correctly');
118    log_error { 'error' };
119    is($cap, "[error] error\n", 'error renders correctly');
120    log_fatal { 'fatal' };
121    is($cap, "[fatal] fatal\n", 'fatal renders correctly');
122
123 }