|
Packit |
a89ea5 |
#!/usr/local/bin/perl -w
|
|
Packit |
a89ea5 |
# Test for File::Temp - POSIX functions
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
use strict;
|
|
Packit |
a89ea5 |
use Test::More tests => 7;
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
use File::Temp qw/ :POSIX unlink0 /;
|
|
Packit |
a89ea5 |
use FileHandle;
|
|
Packit |
a89ea5 |
ok(1);
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# TMPNAM - scalar
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
print "# TMPNAM: in a scalar context: \n";
|
|
Packit |
a89ea5 |
my $tmpnam = tmpnam();
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# simply check that the file does not exist
|
|
Packit |
a89ea5 |
# Not a 100% water tight test though if another program
|
|
Packit |
a89ea5 |
# has managed to create one in the meantime.
|
|
Packit |
a89ea5 |
ok( !(-e $tmpnam ));
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
print "# TMPNAM file name: $tmpnam\n";
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# TMPNAM list context
|
|
Packit |
a89ea5 |
# Not strict posix behaviour
|
|
Packit |
a89ea5 |
(my $fh, $tmpnam) = tmpnam();
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
print "# TMPNAM: in list context: $fh $tmpnam\n";
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# File is opened - make sure it exists
|
|
Packit |
a89ea5 |
ok( (-e $tmpnam ));
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# Unlink it - a possible NFS issue again if TMPDIR is not a local disk
|
|
Packit |
a89ea5 |
my $status = unlink0($fh, $tmpnam);
|
|
Packit |
a89ea5 |
if ($status) {
|
|
Packit |
a89ea5 |
ok( $status );
|
|
Packit |
a89ea5 |
} else {
|
|
Packit |
a89ea5 |
SKIP: {
|
|
Packit |
a89ea5 |
skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
|
|
Packit |
a89ea5 |
}
|
|
Packit |
a89ea5 |
}
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# TMPFILE
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
$fh = tmpfile();
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
if (defined $fh) {
|
|
Packit |
a89ea5 |
ok( $fh );
|
|
Packit |
a89ea5 |
print "# TMPFILE: tmpfile got FH $fh\n";
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
$fh->autoflush(1) if $] >= 5.006;
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# print something to it
|
|
Packit |
a89ea5 |
my $original = "Hello a test\n";
|
|
Packit |
a89ea5 |
print "# TMPFILE: Wrote line: $original";
|
|
Packit |
a89ea5 |
print $fh $original
|
|
Packit |
a89ea5 |
or die "Error printing to tempfile\n";
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# rewind it
|
|
Packit |
a89ea5 |
ok( seek($fh,0,0) );
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
# Read from it
|
|
Packit |
a89ea5 |
my $line = <$fh>;
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
print "# TMPFILE: Read line: $line";
|
|
Packit |
a89ea5 |
ok( $original, $line);
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
close($fh);
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
} else {
|
|
Packit |
a89ea5 |
# Skip all the remaining tests
|
|
Packit |
a89ea5 |
foreach (1..3) {
|
|
Packit |
a89ea5 |
SKIP: {
|
|
Packit |
a89ea5 |
skip("Skip test failed probably due to \$TMPDIR being on NFS",1);
|
|
Packit |
a89ea5 |
}
|
|
Packit |
a89ea5 |
}
|
|
Packit |
a89ea5 |
}
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
|
|
Packit |
a89ea5 |
|