diff options
Diffstat (limited to 't/052Utf8.t')
-rw-r--r-- | t/052Utf8.t | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/t/052Utf8.t b/t/052Utf8.t new file mode 100644 index 0000000..ea40d39 --- /dev/null +++ b/t/052Utf8.t @@ -0,0 +1,130 @@ +########################################### +# Test Suite for utf8 output +# Mike Schilli, 2004 (m@perlmeister.com) +########################################### + +BEGIN { + if($ENV{INTERNAL_DEBUG}) { + require Log::Log4perl::InternalDebug; + Log::Log4perl::InternalDebug->enable(); + } +} + +use strict; + +my $EG_DIR = "eg"; +$EG_DIR = "../eg" unless -d $EG_DIR; + +use Test::More; +use Log::Log4perl qw(:easy); + +BEGIN { + if($] < 5.008) { + plan skip_all => "utf-8 tests with perl >= 5.8 only"; + } else { + plan tests => 6; + } +} + +my $WORK_DIR = "tmp"; +if(-d "t") { + $WORK_DIR = File::Spec->catfile(qw(t tmp)); +} +unless (-e "$WORK_DIR"){ + mkdir("$WORK_DIR", 0755) || die "can't create $WORK_DIR ($!)"; +} + +my $TMP_FILE = File::Spec->catfile(qw(t tmp utf8.out)); +$TMP_FILE = "tmp/utf8.out" if ! -d "t"; + +END { + unlink $TMP_FILE; + rmdir $WORK_DIR; + } + +########### +# utf8 file appender +########### +my $conf = <<EOT; + log4perl.logger = DEBUG, A1 + log4perl.appender.A1=Log::Log4perl::Appender::File + log4perl.appender.A1.filename=$TMP_FILE + log4perl.appender.A1.mode=write + log4perl.appender.A1.utf8=1 + log4perl.appender.A1.layout=PatternLayout + log4perl.appender.A1.layout.ConversionPattern=%d-%c %m%n +EOT +Log::Log4perl->init(\$conf); +DEBUG "quack \x{A4}"; +open FILE, "<:utf8", $TMP_FILE or die "Cannot open $TMP_FILE"; +my $data = join '', <FILE>; +close FILE; +like($data, qr/\x{A4}/, "conf: utf8-1"); + +########### +# binmode +########### +$conf = <<EOT; + log4perl.logger = DEBUG, A1 + log4perl.appender.A1=Log::Log4perl::Appender::File + log4perl.appender.A1.filename=$TMP_FILE + log4perl.appender.A1.mode=write + log4perl.appender.A1.binmode=:utf8 + log4perl.appender.A1.layout=PatternLayout + log4perl.appender.A1.layout.ConversionPattern=%d-%c %m%n +EOT +Log::Log4perl->init(\$conf); +DEBUG "quack \x{A5}"; +open FILE, "<:utf8", $TMP_FILE or die "Cannot open $TMP_FILE"; +$data = join '', <FILE>; +close FILE; +like($data, qr/\x{A5}/, "binmode: utf8-1"); + +########### +# Easy mode +########### +Log::Log4perl->easy_init({file => ":utf8> $TMP_FILE", + level => $DEBUG}); + +DEBUG "odd character: \x{30B8}"; +open FILE, "<:utf8", $TMP_FILE or die "Cannot open $TMP_FILE"; +$data = join '', <FILE>; +close FILE; +like($data, qr/\x{30B8}/, "easy: utf8-1"); + +########### +# Easy mode with utf8 setting +########### + +open STDERR, ">$TMP_FILE"; +select STDERR; $| = 1; #needed on win32 +select STDOUT; +open IN, "<$TMP_FILE" or die "Cannot open $TMP_FILE"; binmode IN, ":utf8"; +sub readstderr { return join("", <IN>); } + +END { unlink $TMP_FILE; + close IN; + } + +Log::Log4perl->easy_init({ + level => $DEBUG, + file => "STDERR", + utf8 => 1, +}); + +use utf8; +DEBUG "Über"; +binmode STDOUT, ":utf8"; # for better error messages of the test suite +like(readstderr(), qr/Über/, 'utf8 matches'); + +########### +# utf8 config file +########### +use Log::Log4perl::Config; +Log::Log4perl::Config->utf8(1); +Log::Log4perl->init("$EG_DIR/log4j-utf8.conf"); +DEBUG "blech"; +my $app = Log::Log4perl::Appender::TestBuffer->by_name("Ä1"); +ok defined $app, "app found"; +my $buf = $app->buffer(); +is $buf, "blech\n", "utf8 named appender"; |