blob: 20f0c0cfb16002857f7b3a97f7a924a339e3998f [file] [log] [blame]
# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::apache_file;
# Apache::File compat layer tests
# these tests are all run and validated on the server side.
use strict;
use warnings FATAL => 'all';
use Apache::TestUtil;
use Apache::Test;
use Apache2::compat ();
use Apache::Constants qw(OK);
sub handler {
my $r = shift;
plan $r, tests => 18;
$r->send_http_header('text/plain');
my $cfg = Apache::Test::config();
my $vars = $cfg->{vars};
require Apache::File;
my $file = $vars->{t_conf_file};
t_debug "new Apache2::File file object";
ok my $fh = Apache::File->new;
t_debug "open itself";
if ($fh->open($file)) {
ok 1;
t_debug "read from file";
my $read = <$fh>;
ok $read;
t_debug "close file";
ok $fh->close;
}
else {
t_debug "open $file failed: $!";
ok 0;
t_debug "ok: cannot read from the closed fh";
ok 1;
t_debug "ok: close file should fail, wasn't opened";
ok !$fh->close;
}
t_debug "open non-exists";
ok !$fh->open("$file.nochance");
t_debug "new+open";
if (my $fh = Apache::File->new($file)) {
ok 1;
$fh->close;
}
else {
ok 0;
}
t_debug "new+open non-exists";
ok !Apache::File->new("$file.yeahright");
# tmpfile
my ($tmpfile, $tmpfh) = Apache::File->tmpfile;
t_debug "open tmpfile fh";
ok $tmpfh;
t_debug "open tmpfile name";
ok $tmpfile;
my $write = "test $$";
print $tmpfh $write;
seek $tmpfh, 0, 0;
ok t_cmp(<$tmpfh>, $write, "write/read from tmpfile");
ok t_cmp($r->discard_request_body,
Apache2::Const::OK,
"\$r->discard_request_body");
ok t_cmp($r->meets_conditions,
Apache2::Const::OK,
"\$r->meets_conditions");
my $csize = 10;
$r->set_content_length($csize);
ok t_cmp($r->headers_out->{"Content-length"},
$csize,
"\$r->set_content_length($csize) w/ setting explicit size");
# #$r->set_content_length();
# #TODO
# ok t_cmp(0, # XXX: $r->finfo->csize is not available yet
# $r->headers_out->{"Content-length"},
# "\$r->set_content_length() w/o setting explicit size");
# XXX: how to test etag?
t_debug "\$r->set_etag";
$r->set_etag;
ok 1;
# $r->update_mtime
t_debug "\$r->update_mtime()";
$r->update_mtime; # just check that it's valid
ok 1;
my $time = time;
$r->update_mtime($time);
ok t_cmp($r->mtime, $time, "\$r->update_mtime(\$time)/\$r->mtime");
# $r->set_last_modified
$r->set_last_modified();
ok t_cmp($r->mtime, $time, "\$r->set_last_modified()");
$r->set_last_modified($time);
ok t_cmp($r->mtime, $time, "\$r->set_last_modified(\$time)");
OK;
}
1;
__END__
PerlOptions +GlobalRequest