commit 7f5507b71c09b822449091f4bcdfa24afba13081
Author: Shawn Laffan <shawnlaffan@gmail.com>
Date:   Tue Oct 27 19:14:43 2015 +1100

    Give antivirus software a chance to let go of files.

diff --git a/t/flexraw_fortran.t b/t/flexraw_fortran.t
index 6f5cef4..dfb6204 100644
--- a/t/flexraw_fortran.t
+++ b/t/flexraw_fortran.t
@@ -184,6 +184,21 @@ sub inpath {
   return 0;
 }
 
+sub delete_temp_files {
+   my @files = shift;
+   foreach my $file (@files) {
+      if (-e $file) {
+         warn "Attempting to delete $file\n" if $Verbose;
+         my $success = unlink $file;
+         if (!$success) {  #  antivirus might be getting in the way - give it some time to let go
+            sleep(2);
+            $success = unlink $file;
+         }
+         warn "Deletion unsuccessful\n" if !$success && $Verbose;
+      }
+   }
+}
+
 # createData $head, $code
 #
 # given a F77 program (in $code), compile and run it.
@@ -222,16 +237,19 @@ sub createData {
     $fh->print( $code );
     $fh->close;
 
+    delete_temp_files "$prog$exec";
+
     system("$F77 $F77flags -o $prog$exec $file".
 	     (($Verbose || $DEBUG)?'': $null));
     
-    unlink $data if -f $data;
+    delete_temp_files $data;
+
     system( $prog );
 
     die "ERROR: code did not create data file $data\n"
       unless -e $data;
 
-    unlink $prog.$exec, $file;
+    delete_temp_files "$prog$exec", $file;
 
 } # sub: createData()
 
@@ -266,6 +284,8 @@ foreach my $pdltype ('float', 'long') {
     my $val = $exprf;
     $val = "char(int($val))" if $pdltype eq 'byte';
 
+    delete_temp_files $data, $hdr, $head;
+
     my $code = <<"EOT";
 
 c Program to test i/o of F77 unformatted files
@@ -333,7 +353,7 @@ EOT
 		   {Type => 'long', NDims => 1, Dims => [ 1 ] },
 		   {Type => $pdltype, NDims => 1, Dims => [ $ndata ] } ];
     @a = readflex($data,$header);
-    unlink $data;
+    delete_temp_files $data;
     $ok = ($a[0]->at(0) == $ndata);
     $res = eval "$pdltype $exprp";
     ok( $ok && tapprox($res,$a[1]), "readflex $pdltype w hdr array" );
@@ -382,7 +402,7 @@ EOT
 
     my @a = readflex($data);
     # print "@a\n";
-    unlink $data, $hdr;
+    delete_temp_files $data, $hdr;
 
     my $ok = ($a[0]->at(0) == $ndata);
     my $res = eval "$pdltype $exprp";
@@ -437,7 +457,7 @@ EOT
 
     my @a = readflex($data);
     # print "@a\n";
-    unlink $data, $hdr;
+    delete_temp_files $data, $hdr;
 
     my $ok = ($a[1]->at(0) == $ndata);
     my $res = eval "$pdltype $exprp";
@@ -490,7 +510,7 @@ EOT
 #	print "$pdltype @a\n";
 #	system("ls -l $data");
 #    }
-    unlink $data, $hdr;
+    delete_temp_files $data, $hdr;
 
     my $ok = ($a[0]->at(0) == $ndata);
     my $res = eval "$pdltype $expr2p";
@@ -568,7 +588,7 @@ SKIP: {
 # Try compressed data
    $ok = 1;
    0 == system "$compress -c $data > ${data}.Z" or diag "system $compress -c $data >${data}.Z failed: $?";
-   unlink( $data );
+   delete_temp_files ( $data );
    @a = readflex($data);
    $ok &&= $#a==6;
    @a = readflex("${data}.Z");
@@ -581,7 +601,7 @@ SKIP: {
    @a = readflex("${data}.gz");
    $ok &&= $#a==6;
    shift @a;
-   unlink "${data}.gz", $hdr;
+   delete_temp_files "${data}.gz", $hdr;
    $d = double pdl (4*atan2(1,1));
    $f = float ($d);
    $l = long (10**$f);
@@ -599,7 +619,7 @@ SKIP: {
 my $flexhdr = writeflex($data,@req);
 writeflexhdr($data,$flexhdr) unless $PDL::IO::FlexRaw::writeflexhdr;
 @a = readflex($data);
-unlink $hdr;
+delete_temp_files $hdr;
 $ok = 1;
 foreach (@req) {
     # print "$_ vs ",@a[0],"\n";
@@ -613,7 +633,7 @@ foreach (@req) {
     $ok &&= tapprox($_,shift @a);
 }
 ok( $ok, "writeflex combined data types, readflex hdr array" );
-unlink $data;
+delete_temp_files $data;
 
 $#a = -1;
 foreach (@req) {
@@ -626,7 +646,7 @@ $flexhdr = [ {Type => 'byte',   NDims => 1, Dims => 10},
 	     {Type => 'float',  NDims => 1, Dims => 10},
 	     {Type => 'double', NDims => 1, Dims => 10} ];
 @a = readflex($data, $flexhdr);
-unlink $data;
+delete_temp_files $data;
 $ok = 1;
 foreach (@req) {
     # print "$_ vs ",@a[0],"\n";
@@ -639,8 +659,8 @@ map {$_ = $_->dummy(0,10)} @req;
 $flexhdr = writeflex($data,@req);
 writeflexhdr($data,$flexhdr) unless $PDL::IO::FlexRaw::writeflexhdr;
 @a = readflex($data);
-unlink $data;
-unlink $hdr;
+delete_temp_files $data;
+delete_temp_files $hdr;
 $ok = 1;
 foreach (@req) {
     # print "$_ vs ",@a[0],"\n";
@@ -663,7 +683,7 @@ foreach (@req) {
     $ok &&= tapprox($_,shift @a);
 }
 close(IN);
-unlink $data;
+delete_temp_files $data;
 ok( $ok, "readflex with file handle" );
 
 # use writeflex with an open file handle
@@ -676,5 +696,5 @@ foreach (@req) {
     # print "$_ vs ",@a[0],"\n";
     $ok &&= tapprox($_,shift @a);
 }
-unlink $data;
+delete_temp_files $data;
 ok( $ok, "writeflex with file handle" );
