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;