Blame t/posix.t

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