add ::Easy::Package for more simple LC usage
[p5sagit/Log-Contextual.git] / t / easy.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5
6 use lib 't/lib';
7 use My::Module; # makes use of Log::Contextual::Easy::Default;
8 use My::Module2; # makes use of Log::Contextual::Easy::Package;
9
10 # capture logging messages of My::Module, mapping "[...] xxx" to "...$sep"
11 sub logshort($$) {
12     my ($cap, $sep) = @_;
13     sub {
14         local $_ = shift;
15         s/^\[(.+)\] (xxx|"xxx")\n$/$1$sep/; 
16         $$cap .= $_;
17     }
18 }
19
20 # capture warnings
21 my ($cap_warn, $cap_with, $cap_set);
22 local $SIG{__WARN__} = logshort \$cap_warn, '!';
23
24 {
25     My::Module::log();
26     My::Module2::log();
27     is($cap_warn, undef, 'no logging by default');
28 }
29
30 {
31     local $ENV{MY_MODULE_UPTO} = 'info';
32     local $ENV{MY_MODULE2_UPTO} = 'info';
33     My::Module::log();
34     My::Module2::log();
35     is($cap_warn, "info!warn!error!fatal!info!warn!error!fatal!", 'WarnLogger enabled via ENV');
36     $cap_warn = '';
37 }
38
39 {
40     use Log::Contextual::SimpleLogger;
41     use Log::Contextual qw(with_logger set_logger);
42
43     set_logger( Log::Contextual::SimpleLogger->new({
44         levels  => [qw(info warn error)],
45         coderef => logshort \$cap_set, '/'
46     }) );
47
48     my $with_logger = Log::Contextual::SimpleLogger->new({
49         levels  => [qw(trace info fatal)],
50         coderef => logshort \$cap_with, '|'
51     });
52     
53     with_logger $with_logger => sub {
54         My::Module::log();
55         My::Module2::log(); # will not be overridden
56     };
57     is($cap_with, 'trace|info|fatal|', 'with_logger');
58
59     My::Module::log();
60     My::Module2::log(); # will not be overridden
61     is($cap_set, 'info/warn/error/', 'set_logger');
62
63     is($cap_warn, '', 'no warnings if with_logger or set_logger');
64 }
65
66 done_testing;
67
68