The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
###########################################
# Test Suite for Log::Log4perl
# Mike Schilli, 2002 (m@perlmeister.com)
###########################################

BEGIN { 
    if($ENV{INTERNAL_DEBUG}) {
        require Log::Log4perl::InternalDebug;
        Log::Log4perl::InternalDebug->enable();
    }
}

use warnings;
use strict;

use Test::More;
BEGIN { plan tests => 4 };

use Log::Log4perl qw(:easy);

#########################################################
# double newline
#########################################################
my $conf = q(
  log4perl.category = DEBUG, Buffer
  log4perl.appender.Buffer = Log::Log4perl::Appender::TestBuffer
  log4perl.appender.Buffer.layout = Log::Log4perl::Layout::PatternLayout
  log4perl.appender.Buffer.layout.ConversionPattern = %d %F{1} %L> %m%n
);

Log::Log4perl->init( \$conf );
my $buf = Log::Log4perl::Appender::TestBuffer->by_name("Buffer");

DEBUG "blah\n";
DEBUG "blah\n";

unlike($buf->buffer(), qr/blah\n\n/);

#########################################################
# turn default %m%n chomping feature off
#########################################################
$conf = q(
  log4perl.category = DEBUG, Buffer
  log4perl.appender.Buffer = Log::Log4perl::Appender::TestBuffer
  log4perl.appender.Buffer.layout = Log::Log4perl::Layout::PatternLayout
  log4perl.appender.Buffer.layout.ConversionPattern = %d %F{1} %L> %m%n
  log4perl.appender.Buffer.layout.message_chomp_before_newline = 0
);

Log::Log4perl->init( \$conf );
$buf = Log::Log4perl::Appender::TestBuffer->by_name("Buffer");

DEBUG "blah\n";
DEBUG "blah\n";
like($buf->buffer(), qr/blah\n\n/);

#########################################################
# %m without chomp
#########################################################
$conf = q(
  log4perl.category = DEBUG, Buffer
  log4perl.appender.Buffer = Log::Log4perl::Appender::TestBuffer
  log4perl.appender.Buffer.layout = Log::Log4perl::Layout::PatternLayout
  log4perl.appender.Buffer.layout.ConversionPattern = %m foo %n
);

Log::Log4perl->init( \$conf );
$buf = Log::Log4perl::Appender::TestBuffer->by_name("Buffer");

DEBUG "blah\n";
like($buf->buffer(), qr/blah\n foo/);

#########################################################
# try %m{chomp}
#########################################################
$conf = q(
  log4perl.category = DEBUG, Buffer
  log4perl.appender.Buffer = Log::Log4perl::Appender::TestBuffer
  log4perl.appender.Buffer.layout = Log::Log4perl::Layout::PatternLayout
  log4perl.appender.Buffer.layout.ConversionPattern = %m{chomp} foo %n
);

Log::Log4perl->init( \$conf );
$buf = Log::Log4perl::Appender::TestBuffer->by_name("Buffer");

DEBUG "blah\n";
DEBUG "blah\n";
like($buf->buffer(), qr/blah foo /);