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