summaryrefslogtreecommitdiff
path: root/t/052Utf8.t
diff options
context:
space:
mode:
Diffstat (limited to 't/052Utf8.t')
-rw-r--r--t/052Utf8.t130
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";