On Mon, 2003-11-17 at 15:31, [EMAIL PROTECTED] wrote: > 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;
I dunno, but I am afraid that stuff like device, inode, nlink and such might not work similarly on non-Unixes.. These tests most likely need to be a bit more OS-specific to avoid failures on those OSes > # 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; > > > >