test of CatLogger idiom
[p5sagit/Log-Contextual.git] / t / category_idiom.t
CommitLineData
a74cad5e 1use strict;
2use warnings;
3
4use Test::More;
5
6my @out;
7
8# these shouldn't be packages, but I'm not sure how else I'm going to
9# do it yet.
10
11{
12 package CatLogger;
13
14 use Log::Contextual::NullLogger;
15 use base 'Log::Contextual::SimpleLogger';
16
17 sub include_category { $_[1] eq 'awesome' }
18
19 sub log_contextual_coderef {
20 my $logger = CatLogger->new({ levels_upto => 'trace', coderef => sub { push @out, $_[0] } });
21
22 return Log::Contextual::NullLogger->new
23 unless $logger->include_category($_[0]{args}[0]);
24 return $logger;
25 }
26
27 1;
28}
29
30{
31 package Foo;
32
33 use Log::Contextual ':log', -args => ['lame'],
34 -package_logger => \&CatLogger::log_contextual_coderef;
35
36 log_debug { 'test' };
37}
38
39ok @out == 0, 'no output because category is lame';
40
41{
42 package Bar;
43 use Log::Contextual::NullLogger;
44
45 use Log::Contextual ':log', -args => ['awesome'],
46 -package_logger => \&CatLogger::log_contextual_coderef;
47
48 log_debug { 'test' };
49}
50
51ok @out == 1, 'output because category is awesome';
52
53done_testing;