1###########################################
2# Test Suite for Appender additivity
3# Mike Schilli, 2002 (m@perlmeister.com)
4###########################################
5
6BEGIN { 
7    if($ENV{INTERNAL_DEBUG}) {
8        require Log::Log4perl::InternalDebug;
9        Log::Log4perl::InternalDebug->enable();
10    }
11}
12
13#########################
14# change 'tests => 1' to 'tests => last_test_to_print';
15#########################
16use Test;
17BEGIN { plan tests => 7 };
18
19use Log::Log4perl qw(get_logger);
20use Log::Log4perl::Appender::TestBuffer;
21
22my $EG_DIR = "eg";
23$EG_DIR = "../eg" unless -d $EG_DIR;
24
25ok(1); # If we made it this far, we're ok.
26
27######################################################################
28# Define the root logger and another logger, additivity on
29######################################################################
30Log::Log4perl->init(\<<'EOT');
31    log4perl.logger = INFO, A1
32    log4perl.logger.Twix.Bar = DEBUG, A2
33    log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
34    log4perl.appender.A1.layout=Log::Log4perl::Layout::SimpleLayout
35    log4perl.appender.A2=Log::Log4perl::Appender::TestBuffer
36    log4perl.appender.A2.layout=Log::Log4perl::Layout::SimpleLayout
37EOT
38
39my $logger = get_logger("Twix::Bar");
40$logger->info("Percolate this!");
41
42my $buf1 = Log::Log4perl::Appender::TestBuffer->by_name("A1")->buffer();
43my $buf2 = Log::Log4perl::Appender::TestBuffer->by_name("A2")->buffer();
44
45ok($buf1, "INFO - Percolate this!\n");
46ok($buf2, "INFO - Percolate this!\n");
47
48Log::Log4perl::Appender::TestBuffer->reset();
49
50######################################################################
51# Define the root logger and another logger, additivity off
52######################################################################
53Log::Log4perl->init(\<<'EOT');
54    log4perl.logger = INFO, A1
55    log4perl.logger.Twix.Bar = DEBUG, A2
56    log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
57    log4perl.appender.A1.layout=Log::Log4perl::Layout::SimpleLayout
58    log4perl.appender.A2=Log::Log4perl::Appender::TestBuffer
59    log4perl.appender.A2.layout=Log::Log4perl::Layout::SimpleLayout
60    log4perl.additivity.Twix.Bar = false
61EOT
62
63$logger = get_logger("Twix::Bar");
64$logger->info("Percolate this!");
65
66$buf1 = Log::Log4perl::Appender::TestBuffer->by_name("A1")->buffer();
67$buf2 = Log::Log4perl::Appender::TestBuffer->by_name("A2")->buffer();
68
69ok($buf1, ""); # Not supposed to show up in the root logger
70ok($buf2, "INFO - Percolate this!\n");
71
72Log::Log4perl::Appender::TestBuffer->reset();
73
74######################################################################
75# Define the root logger and another logger, additivity on explicitely
76######################################################################
77Log::Log4perl->init(\<<'EOT');
78    log4perl.logger = INFO, A1
79    log4perl.logger.Twix.Bar = DEBUG, A2
80    log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
81    log4perl.appender.A1.layout=Log::Log4perl::Layout::SimpleLayout
82    log4perl.appender.A2=Log::Log4perl::Appender::TestBuffer
83    log4perl.appender.A2.layout=Log::Log4perl::Layout::SimpleLayout
84    log4perl.additivity.Twix.Bar = true
85EOT
86
87$logger = get_logger("Twix::Bar");
88$logger->info("Percolate this!");
89
90$buf1 = Log::Log4perl::Appender::TestBuffer->by_name("A1")->buffer();
91$buf2 = Log::Log4perl::Appender::TestBuffer->by_name("A2")->buffer();
92
93ok($buf1, "INFO - Percolate this!\n");
94ok($buf2, "INFO - Percolate this!\n");
95
96Log::Log4perl::Appender::TestBuffer->reset();
97