Apache-Test
view release on metacpan or search on metacpan
lib/Apache/TestUtil.pm view on Meta::CPAN
sub t_write_file {
my $file = shift;
die "must pass a filename" unless defined $file;
# create the parent dir if it doesn't exist yet
makepath(dirname $file);
my $fh = Symbol::gensym();
open $fh, ">$file" or die "can't open $file: $!";
t_debug("writing file: $file");
print $fh join '', @_ if @_;
close $fh;
$CLEAN{files}{$file}++;
}
sub t_append_file {
my $file = shift;
die "must pass a filename" unless defined $file;
# create the parent dir if it doesn't exist yet
makepath(dirname $file);
# add to the cleanup list only if we created it now
$CLEAN{files}{$file}++ unless -e $file;
my $fh = Symbol::gensym();
open $fh, ">>$file" or die "can't open $file: $!";
print $fh join '', @_ if @_;
close $fh;
}
sub t_write_shell_script {
my $file = shift;
my $code = join '', @_;
my($ext, $shebang);
if (Apache::TestConfig::WIN32()) {
$code =~ s/echo$/echo./mg; #required to echo newline
$ext = 'bat';
$shebang = "\@echo off\nREM this is a bat";
}
else {
$ext = 'sh';
$shebang = '#!/bin/sh';
}
$file .= ".$ext";
t_write_file($file, "$shebang\n", $code);
$ext;
}
sub t_write_perl_script {
my $file = shift;
my $shebang = "#!$Config{perlpath}\n";
my $warning = Apache::TestConfig->thaw->genwarning($file);
t_write_file($file, $shebang, $warning, @_);
chmod 0755, $file;
}
sub t_mkdir {
my $dir = shift;
makepath($dir);
}
# returns a list of dirs successfully created
sub makepath {
my($path) = @_;
return if !defined($path) || -e $path;
my $full_path = $path;
# remember which dirs were created and should be cleaned up
while (1) {
$CLEAN{dirs}{$path} = 1;
$path = dirname $path;
last if -e $path;
}
return File::Path::mkpath($full_path, 0, 0755);
}
sub t_rmtree {
die "must pass a dirname" unless defined $_[0];
File::Path::rmtree((@_ > 1 ? \@_ : $_[0]), 0, 1);
}
#chown a file or directory to the test User/Group
#noop if chown is unsupported
sub t_chown {
my $file = shift;
my $config = Apache::Test::config();
my($uid, $gid);
eval {
#XXX cache this lookup
($uid, $gid) = (getpwnam($config->{vars}->{user}))[2,3];
};
if ($@) {
if ($@ =~ /^The getpwnam function is unimplemented/) {
#ok if unsupported, e.g. win32
return 1;
}
else {
die $@;
}
}
CORE::chown($uid, $gid, $file) || die "chown $file: $!";
}
# $string = struct_as_string($indent_level, $var);
#
# return any nested datastructure via Data::Dumper or ala Data::Dumper
# as a string. undef() is a valid arg.
( run in 1.094 second using v1.01-cache-2.11-cpan-39bf76dae61 )