geoff       2003/11/17 15:31:02

  Added:       t/response/TestAPR finfo.pm
  Log:
  add $r->finfo tests
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/response/TestAPR/finfo.pm
  
  Index: finfo.pm
  ===================================================================
  package TestAPR::finfo;
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestUtil;
  use Apache::TestTrace;
  
  use Apache::RequestRec ();
  use APR::Finfo ();
  use APR::Const -compile => qw(SUCCESS FINFO_NORM REG
                                WREAD WWRITE WEXECUTE);
  
  use File::Spec::Functions qw(catfile);
  use Fcntl qw(:mode);
  
  use Apache::Const -compile => 'OK';
  
  sub handler {
      my $r = shift;
  
      plan $r, tests => 17;
  
      {
          my $finfo = $r->finfo;
          my $isa = $finfo->isa('APR::Finfo');
  
          t_debug "\$r->finfo $finfo";
          ok $isa;
      }
  
      {
          my $pool = $r->finfo->pool;
          my $isa = $pool->isa('APR::Pool');
  
          t_debug "\$r->finfo->pool $pool";
          ok $isa;
      }
  
      my $file = Apache->server_root_relative(catfile qw(htdocs index.html));
  
      # stat tests
      {
          # populate the finfo struct first
          my $status = APR::Finfo::stat($r->finfo, $file, 
                                        APR::FINFO_NORM, $r->pool);
  
          ok t_cmp(APR::SUCCESS,
                   $status,
                   "stat $file");
  
          # now, get information from perl's stat()
          our ($device, $inode, $protection, $nlink, $user, $group,
               undef, $size, $atime, $mtime, $ctime) = stat $file;
  
          # compare stat fields between perl and apr_stat
          {
              no strict qw(refs);
              foreach my $method (qw(device inode nlink user group
                                     size atime mtime ctime)) {
  
                  ok t_cmp(${$method},
                           $r->finfo->$method(),
                           "\$r->finfo->$method()");
              }
          }
  
          # match world bits
  
          ok t_cmp($protection & S_IROTH,
                   $r->finfo->protection & APR::WREAD,
                   '$r->finfo->protection() & APR::WREAD');
  
          ok t_cmp($protection & S_IWOTH,
                   $r->finfo->protection & APR::WWRITE,
                   '$r->finfo->protection() & APR::WWRITE');
  
          ok t_cmp($protection & S_IXOTH,
                   $r->finfo->protection & APR::WEXECUTE,
                   '$r->finfo->protection() & APR::WEXECUTE');
      }
  
      # tests for stuff not in perl's stat
      {
          ok t_cmp($file,
                   $r->finfo->fname,
                   '$r->finfo->fname()');
  
          ok t_cmp(APR::REG,
                   $r->finfo->filetype,
                   '$r->finfo->filetype()');
      }        
  
      Apache::OK;
  }
  
  1;
  
  
  

Reply via email to