stas 2003/09/22 16:50:10
Modified: t/modperl print_utf8.t t/response/TestModperl print_utf8.pm Log: test cleanups and imrovements Revision Changes Path 1.2 +9 -18 modperl-2.0/t/modperl/print_utf8.t Index: print_utf8.t =================================================================== RCS file: /home/cvs/modperl-2.0/t/modperl/print_utf8.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -u -r1.1 -r1.2 --- print_utf8.t 20 Aug 2003 23:20:14 -0000 1.1 +++ print_utf8.t 22 Sep 2003 23:50:10 -0000 1.2 @@ -6,29 +6,20 @@ use Apache::TestUtil; # utf encode/decode was added only in 5.8.0 -# currently binmode is only available with perlio +# XXX: currently binmode is only available with perlio (used on the +# server side on the tied/perlio STDOUT) plan tests => 1, have have_min_perl_version(5.008), have_perl('perlio'); -#use bytes; -#use utf8; - my $location = "/TestModperl__print_utf8"; - -my $received = GET_BODY_ASSERT $location; - -# the external stream already include wide-chars, but perl doesn't -# know about it -utf8::decode($received); - -binmode(STDOUT, ':utf8'); - - my $expected = "Hello Ayhan \x{263A} perlio rules!"; -print "$expected\n"; -print "$received\n"; +my $res = GET $location; +my $received = $res->content; -#ok $expected eq $received; +# response body includes wide-chars, but perl doesn't know about it +utf8::decode($received) if ($res->header('Content-Type')||'') =~ /utf-8/i; -ok t_cmp($expected, $received, 'UTF8 encoding'); +# needed for debugging print out of utf8 strings +binmode(STDOUT, ':utf8'); +ok t_cmp($expected, $received, 'UTF8 response via tied/perlio STDOUT'); 1.2 +10 -5 modperl-2.0/t/response/TestModperl/print_utf8.pm Index: print_utf8.pm =================================================================== RCS file: /home/cvs/modperl-2.0/t/response/TestModperl/print_utf8.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -u -r1.1 -r1.2 --- print_utf8.pm 20 Aug 2003 23:20:14 -0000 1.1 +++ print_utf8.pm 22 Sep 2003 23:50:10 -0000 1.2 @@ -1,5 +1,12 @@ package TestModperl::print_utf8; +# testing the utf8-encoded response via a tied STDOUT/perlio STDOUT, +# the latter if perl was built with perlio. +# see Modperl/print_utf8_2.pm for $r->print + +# must test against a tied STDOUT/perlio STDOUT. $r->print does the +# right thing without any extra provisions + use strict; use warnings FATAL => 'all'; @@ -8,17 +15,16 @@ use Apache::Const -compile => 'OK'; -use utf8; - sub handler { my $r = shift; $r->content_type('text/plain; charset=UTF-8'); - #Apache::RequestRec::BINMODE - binmode(STDOUT, ':utf8'); + # prevent warning: "Wide character in print" + binmode(STDOUT, ':utf8'); # Apache::RequestRec::BINMODE() # must be non-$r->print(), so we go through the tied STDOUT + # \x{263A} == :-) print "Hello Ayhan \x{263A} perlio rules!"; Apache::OK; @@ -26,5 +32,4 @@ 1; __DATA__ -# must test against a tied STDOUT SetHandler perl-script