You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2003/09/23 01:53:16 UTC

cvs commit: modperl-2.0/t/response/TestModperl print_utf8_2.pm

stas        2003/09/22 16:53:16

  Added:       t/modperl print_utf8_2.t
               t/response/TestModperl print_utf8_2.pm
  Log:
  similar to TestModperl::print_utf8, testing utf8 print, but via $r->print
  which just works
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/modperl/print_utf8_2.t
  
  Index: print_utf8_2.t
  ===================================================================
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestRequest;
  use Apache::TestUtil;
  
  use Config;
  
  # utf encode/decode was added only in 5.8.0
  # perlio is needed only for the client side, because it calls binmode(STDOUT, ':utf8');
  plan tests => 1, have_min_perl_version(5.008);
  
  my $location = "/TestModperl__print_utf8_2";
  my $expected = "\$r->print() just works \x{263A}";
  
  my $res = GET $location;
  my $received = $res->content;
  
  # response body includes wide-chars, but perl doesn't know about it
  utf8::decode($received) if ($res->header('Content-Type')||'') =~ /utf-8/i;
  
  if ($Config{useperlio}) {
      # needed for debugging print out of utf8 strings
      # but works only if perl is built w/ perlio
      binmode(STDOUT, ':utf8');
      ok t_cmp($expected, $received, 'UTF8 response via $r->print');
  }
  else {
      ok $expected eq $received;
  }
  
  
  
  
  1.1                  modperl-2.0/t/response/TestModperl/print_utf8_2.pm
  
  Index: print_utf8_2.pm
  ===================================================================
  package TestModperl::print_utf8_2;
  
  # testing the utf8-encoded response via direct $r->print, which does the
  # right thing without any extra provisions.
  # see print_utf8.pm for tied STDOUT/perlio STDOUT, which requires extra work
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::RequestIO ();
  use Apache::RequestRec ();
  
  use Apache::Const -compile => 'OK';
  
  sub handler {
      my $r = shift;
  
      $r->content_type('text/plain; charset=UTF-8');
  
      # must be non-$r->print(), so we go through the tied STDOUT
      # \x{263A} == :-)
      $r->print("\$r->print() just works \x{263A}");
  
      Apache::OK;
  }
  
  1;
  __DATA__
  SetHandler modperl