You are viewing a plain text version of this content. The canonical link for it is here.
Posted to test-cvs@httpd.apache.org by co...@apache.org on 2002/01/05 18:20:34 UTC

cvs commit: httpd-test/perl-framework/t/conf extra.conf.in

coar        02/01/05 09:20:33

  Modified:    perl-framework/t/conf extra.conf.in
  Added:       perl-framework/t/apache etags.t
  Log:
  Last pieces of apache/etags.t test
  
  Revision  Changes    Path
  1.1                  httpd-test/perl-framework/t/apache/etags.t
  
  Index: etags.t
  ===================================================================
  #
  # Test the FileETag directive.
  #
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestRequest;
  use Apache::TestUtil;
  
  t_debug "Checking for existence of FileETag directive\n";
  my $resp = GET('/etags/test.txt');
  my $rc = $resp->code;
  t_debug "Returned $rc:";
  if ($rc == 500) {
      t_debug "Feature not supported, skipping..",
          " Message was:", $resp->as_string;
      if (defined($resp->content)) {
          t_debug $resp->content;
      }
      plan tests => 1..0;
      exit;
  }
  
  #
  # The tests verify the inclusion of the different fields, and
  # inheritance, according to the directories involved.  All are
  # subdirectories under /etags/.  The key is the path, the value
  # is the pattern the ETag response header field needs to match,
  # and the comment is the keywords on the FileETag directive in
  # the directory's .htaccess file.  A pattern of "" means the header
  # field is expected to be absent.
  #
  # The things we want to test are:
  #
  # 1. That the 'All' and 'None' keywords work.
  # 2. That the 'MTime', 'INode', and 'Size' keywords work,
  #    alone and in combination.
  # 3. That '+MTime', '+INode', and '+Size' work, alone and
  #    in combination.
  # 4. That '-MTime', '-INode', and '-Size' work, alone and
  #    in combination.
  # 5. That relative keywords work in combination with non-relative
  #    ones.
  # 6. That inheritance works properly.
  #
  my $x = '[0-9a-fA-F]+';
  my $tokens_1 = "^\"$x\"\$";
  my $tokens_2 = "^\"$x-$x\"\$";
  my $tokens_3 = "^\"$x-$x-$x\"\$";
  my %expect = ($tokens_1 => "one component in ETag field",
                $tokens_2 => "two components in ETag field",
                $tokens_3 => "three components in ETag field",
                ""        => "field to be absent"
                );
  my %tests = (
               '/default/'                 => $tokens_3, # Legacy behaviour
               #
               # First, the absolute settings in various combinations,
               # disregarding inheritance.
               #
               '/m/'                       => $tokens_1, # MTime
               '/i/'                       => $tokens_1, # INode
               '/s/'                       => $tokens_1, # Size
               '/mi/'                      => $tokens_2, # MTime INode
               '/ms/'                      => $tokens_2, # MTime Size
               '/is/'                      => $tokens_2, # INode Size
               '/mis/'                     => $tokens_3, # MTime INode Size
               '/all/'                     => $tokens_3, # All
               '/none/'                    => "",        # None
               '/all/m/'                   => $tokens_1, # MTime
               '/all/i/'                   => $tokens_1, # INode
               '/all/s/'                   => $tokens_1, # Size
               '/all/mi/'                  => $tokens_2, # MTime INode
               '/all/ms/'                  => $tokens_2, # MTime Size
               '/all/is/'                  => $tokens_2, # INode Size
               '/all/mis/'                 => $tokens_3, # MTime INode Size
               '/all/inherit/'             => $tokens_3, # no directive
               '/none/m/'                  => $tokens_1, # MTime
               '/none/i/'                  => $tokens_1, # INode
               '/none/s/'                  => $tokens_1, # Size
               '/none/mi/'                 => $tokens_2, # MTime INode
               '/none/ms/'                 => $tokens_2, # MTime Size
               '/none/is/'                 => $tokens_2, # INode Size
               '/none/mis/'                => $tokens_3, # MTime INode Size
               '/none/inherit/'            => "",        # no directive
               #
               # Now for the relative keywords.  First, subtract fields
               # in a place where they all should have been inherited.
               #
               '/all/minus-m/'             => $tokens_2, # -MTime
               '/all/minus-i/'             => $tokens_2, # -INode
               '/all/minus-s/'             => $tokens_2, # -Size
               '/all/minus-mi/'            => $tokens_1, # -MTime -INode
               '/all/minus-ms/'            => $tokens_1, # -MTime -Size
               '/all/minus-is/'            => $tokens_1, # -INode -Size
               '/all/minus-mis/'           => "",        # -MTime -INode -Size
               #
               # Now add them in a location where they should all be absent.
               #
               '/none/plus-m/'             => $tokens_1, # +MTime
               '/none/plus-i/'             => $tokens_1, # +INode
               '/none/plus-s/'             => $tokens_1, # +Size
               '/none/plus-mi/'            => $tokens_2, # +MTime +INode
               '/none/plus-ms/'            => $tokens_2, # +MTime +Size
               '/none/plus-is/'            => $tokens_2, # +INode +Size
               '/none/plus-mis/'           => $tokens_3, # +MTime +INode +Size
               #
               # Try subtracting them below where they were added.
               #
               '/none/plus-mis/minus-m/'   => $tokens_2, # -MTime
               '/none/plus-mis/minus-i/'   => $tokens_2, # -INode
               '/none/plus-mis/minus-s/'   => $tokens_2, # -Size
               '/none/plus-mis/minus-mi/'  => $tokens_1, # -MTime -INode
               '/none/plus-mis/minus-ms/'  => $tokens_1, # -MTime -Size
               '/none/plus-mis/minus-is/'  => $tokens_1, # -INode -Size
               '/none/plus-mis/minus-mis/' => "",        # -MTime -INode -Size
               #
               # Now relative settings under a non-All non-None absolute
               # setting location.
               #
               '/m/plus-m/'                => $tokens_1, # +MTime
               '/m/plus-i/'                => $tokens_2, # +INode
               '/m/plus-s/'                => $tokens_2, # +Size
               '/m/plus-mi/'               => $tokens_2, # +MTime +INode
               '/m/plus-ms/'               => $tokens_2, # +MTime +Size
               '/m/plus-is/'               => $tokens_3, # +INode +Size
               '/m/plus-mis/'              => $tokens_3, # +MTime +INode +Size
               '/m/minus-m/'               => "",        # -MTime
               '/m/minus-i/'               => "",        # -INode
               '/m/minus-s/'               => "",        # -Size
               '/m/minus-mi/'              => "",        # -MTime -INode
               '/m/minus-ms/'              => "",        # -MTime -Size
               '/m/minus-is/'              => "",        # -INode -Size
               '/m/minus-mis/'             => ""         # -MTime -INode -Size
               );
  
  my $testcount = scalar(keys(%tests));
  plan tests => $testcount;
  
  for my $key (keys(%tests)) {
      my $uri = "/etags" . $key . "test.txt";
      my $pattern = $tests{$key};
      t_debug "---", "HEAD $uri",
          "Expecting " . $expect{$pattern};
      $resp = HEAD($uri);
      my $etag = $resp->header("ETag");
      if (defined($etag)) {
          t_debug "Received $etag";
          ok ($etag =~ /$pattern/);
      }
      else {
          t_debug "ETag field is missing";
          if ($tests{$key} eq "") {
              ok 1;
          }
          else {
              t_debug "ETag field was expected";
              ok 0;
          }
      }
  }
  
  #
  # Local Variables:
  # mode: perl
  # indent-tabs-mode: nil
  # End:
  #
  
  
  
  1.33      +9 -0      httpd-test/perl-framework/t/conf/extra.conf.in
  
  Index: extra.conf.in
  ===================================================================
  RCS file: /home/cvs/httpd-test/perl-framework/t/conf/extra.conf.in,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -u -r1.32 -r1.33
  --- extra.conf.in	21 Nov 2001 18:42:09 -0000	1.32
  +++ extra.conf.in	5 Jan 2002 17:20:33 -0000	1.33
  @@ -1,4 +1,13 @@
   ##
  +## FileETag test config
  +##
  +<Directory @SERVERROOT@/htdocs/etags>
  +    AllowOverride All
  +    Order Deny,Allow
  +#    Satisfy Any
  +</Directory>
  +
  +##
   ## mod_php4 test config
   ##