stas        2004/01/24 17:04:16

  Modified:    ModPerl-Registry/lib/ModPerl RegistryCooker.pm
               .        Changes
  Added:       ModPerl-Registry/t nph.t
               ModPerl-Registry/t/cgi-bin nph-foo.pl
  Log:
  ModPerl::Registry and friends now support non-parsed headers scripts,
  whose filename =~ /^nph-/, identically to mod_cgi
  
  Revision  Changes    Path
  1.41      +7 -0      modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
  
  Index: RegistryCooker.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -u -r1.40 -r1.41
  --- RegistryCooker.pm 19 Dec 2003 06:32:28 -0000      1.40
  +++ RegistryCooker.pm 25 Jan 2004 01:04:16 -0000      1.41
  @@ -25,6 +25,7 @@
   use ModPerl::Global ();
   
   use File::Spec::Functions ();
  +use File::Basename;
   
   use Apache::Const -compile => qw(:common &OPT_EXECCGI);
   
  @@ -360,6 +361,11 @@
   
       $self->strip_end_data_segment;
   
  +    # handle the non-parsed handlers ala mod_cgi (though mod_cgi does
  +    # some tricks removing the header_out and other filters, here we
  +    # just call assbackwards which has the same effect).
  +    my $base = File::Basename::basename($self->{FILENAME});
  +    my $nph = substr($base, 0, 4) eq 'nph-' ? '$_[0]->assbackwards(1);' : "";
       my $script_name = $self->get_script_name || $0;
   
       my $eval = join '',
  @@ -367,6 +373,7 @@
                       $self->{PACKAGE}, ";",
                       "sub handler {",
                       "local \$0 = '$script_name';",
  +                    $nph,
                       $line,
                       ${ $self->{CODE} },
                       "\n}"; # last line comment without newline?
  
  
  
  1.1                  modperl-2.0/ModPerl-Registry/t/nph.t
  
  Index: nph.t
  ===================================================================
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestUtil;
  use Apache::TestRequest;
  
  plan tests => 6;
  
  my $url = "/nph/nph-foo.pl";
  
  my %expected = (
      code    => '250',
      body    => "non-parsed headers body",
      headers => {
          'content-type' => 'text/text',
          'pragma' => 'no-cache',
          'cache-control' => 'must-revalidate, no-cache, no-store',
          'expires' => '-1',
      },
  );
  
  my $res = GET $url;
  
  my %received = (
      code    => $res->code,
      body    => $res->content,
      headers => $res->headers, # LWP lc's the headers
  );
  
  for my $key (keys %expected) {
      my $expected = $expected{$key};
      my $received = $received{$key};
      if ($key eq 'headers') {
          for my $header (keys %$expected) {
              ok t_cmp(
                  $expected->{$header},
                  $received->{$header},
                  "test header $header"
              );
          }
      }
      else {
          ok t_cmp(
              $expected,
              $received,
              "test key: $key"
          );
      }
  }
  
  
  
  
  1.1                  modperl-2.0/ModPerl-Registry/t/cgi-bin/nph-foo.pl
  
  Index: nph-foo.pl
  ===================================================================
  #!/usr/bin/perl -w
  
  my $r = shift;
  
  print "HTTP/1.0 250 Pretty OK\r\n";
  print join("\n",
       'Content-type: text/text',
       'Pragma: no-cache',
       'Cache-control: must-revalidate, no-cache, no-store',
       'Expires: -1',
       "\n");
  
  print "non-parsed headers body";
  
  
  
  1.310     +3 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.309
  retrieving revision 1.310
  diff -u -u -r1.309 -r1.310
  --- Changes   23 Jan 2004 15:27:08 -0000      1.309
  +++ Changes   25 Jan 2004 01:04:16 -0000      1.310
  @@ -12,6 +12,9 @@
   
   =item 1.99_13-dev
   
  +ModPerl::Registry and friends now support non-parsed headers scripts,
  +whose filename =~ /^nph-/, identically to mod_cgi. + test [Stas]
  +
   expose APR::Brigade::length() and APR::Brigade::flatten()
   [Geoffrey Young]
   
  
  
  

Reply via email to