#!/usr/bin/perl
use warnings;
use strict;
use Test::More qw(no_plan);
use File::Fu;
my $tmp = File::Fu->dir->temp_dir('tmp.');
can_ok($tmp, 'basename');
can_ok($tmp, 'dirname');
is($tmp->dirname, './');
like($tmp->basename, qr/^tmp\./);
eval {$tmp /= "foo"};
like($@, qr/^cannot mutate/);
my $subdir = $tmp / 'foo';
ok(! $subdir->isa('File::Fu::Dir::Temp'));
{
my $fn;
{
my $fh = File::Fu->dir->temp_file;
$fn = $fh->name;
is($fn->dirname, File::Fu->dir);
ok($fn->e);
ok(-e $fn);
$fn = "$fn";
}
ok(! -e $fn, 'gone');
}
{
my $fn;
{
my $fh = File::Fu->temp_file('foo');
$fn = $fh->name;
like($fn->basename, qr/^foo/);
is($fn->dirname, File::Fu->tmp);
ok($fn->e);
ok(-e $fn);
$fn = "$fn";
}
ok(! -e $fn, 'gone');
}
{ # write+do
my @stuff = ("thbbt\n", "xo094auc\n", "\n \n...ee\n");
my $n;
is(scalar(
File::Fu->temp_file->write(@stuff)->do(sub {
$n = ''.$_->name;
ok(-e $n);
$_->name->read
})
), join('',@stuff), "write temp file");
ok(not(-e $n), "$n gone");
}
{
my $x = File::Fu->temp_file;
$x->write("...");
eval {$x->write("\n")};
like(($@||''), qr/^write\(\) on closed tempfile/);
}
# vim:ts=2:sw=2:et:sta