diff options
Diffstat (limited to 't/051Extra.t')
-rw-r--r-- | t/051Extra.t | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/t/051Extra.t b/t/051Extra.t new file mode 100644 index 0000000..010f70b --- /dev/null +++ b/t/051Extra.t @@ -0,0 +1,113 @@ +########################################### +# Test Suite for :no_extra_logdie_message +# Mike Schilli, 2005 (m@perlmeister.com) +########################################### + +BEGIN { + if($ENV{INTERNAL_DEBUG}) { + require Log::Log4perl::InternalDebug; + Log::Log4perl::InternalDebug->enable(); + } +} + +use warnings; +use strict; + +use Log::Log4perl qw(:easy :no_extra_logdie_message); +use Test::More; + +BEGIN { + if ($] < 5.008) { + plan skip_all => "Only with perl >= 5.008"; + } else { + plan tests => 11; + } +} + +END { + unlink "t/tmp/easy"; + rmdir "t/tmp"; +} + +mkdir "t/tmp" unless -d "t/tmp"; + +use Log::Log4perl::Appender::TestBuffer; + +is($Log::Log4perl::LOGDIE_MESSAGE_ON_STDERR, 0, "internal variable set"); + +my $conf = qq( +log4perl.category = DEBUG, Screen + + # Regular Screen Appender +log4perl.appender.Screen = Log::Log4perl::Appender::TestBuffer +log4perl.appender.Screen.layout = PatternLayout +log4perl.appender.Screen.layout.ConversionPattern = %d %p %c %m %n +); + +Log::Log4perl->init(\$conf); + +######################################################################### +# Capture STDERR to a temporary file and a filehandle to read from it + +my $TMP_FILE = File::Spec->catfile(qw(t tmp easy)); +$TMP_FILE = "tmp/easy" if ! -d "t"; + +open STDERR, ">$TMP_FILE"; +select STDERR; $| = 1; #needed on win32 +open IN, "<$TMP_FILE" or die "Cannot open $TMP_FILE"; binmode IN, ":utf8"; +sub readstderr { return join("", <IN>); } + +END { unlink $TMP_FILE; + close IN; + } +######################################################################### + +my $buf = Log::Log4perl::Appender::TestBuffer->by_name("Screen"); + +$buf->buffer(""); +my $line_ref = __LINE__ + 1; +LOGCARP("logcarp"); + +like(readstderr(), qr/logcarp at /, "Output to stderr"); +SKIP: { use Carp; + skip "Detected buggy Carp.pm (upgrade to perl-5.8.*)", 3 unless + defined $Carp::VERSION; + like($buf->buffer(), qr/logcarp.*$line_ref/, "Appender output intact"); + $buf->buffer(""); + $line_ref = __LINE__ + 1; + LOGCARP("logcarp"); + like(readstderr(), qr/logcarp at /, "Output to stderr"); + like($buf->buffer(), qr/logcarp.*$line_ref/, "Appender output intact"); +} + +$line_ref += 6; +$buf->clear; +LOGWARN("Doesn't call 'exit'"); +is(readstderr(), "", "No output to stderr"); +like($buf->buffer(), qr/Doesn't call 'exit'/, "Appender output intact"); +######################################################################### +# Turn default behaviour back on +######################################################################### +$Log::Log4perl::LOGDIE_MESSAGE_ON_STDERR ^= 1; +$buf->buffer(""); + +package Foo; +use Log::Log4perl qw(:easy); +sub foo { + LOGCARP("logcarp"); +} +package main; + +Foo::foo(); + +$line_ref += 17; +like(readstderr(), qr/logcarp.*$line_ref/, "Output to stderr"); +like($buf->buffer(), qr/logcarp.*$line_ref/, "Appender output intact"); + +$buf->buffer(""); +eval { + LOGDIE("logdie"); +}; +$line_ref += 8; +like($@, qr/logdie.*$line_ref/, "Output to stderr"); +like($buf->buffer(), qr/logdie/, "Appender output intact"); |