Re: [PATCH] Tests for File::Compare
[p5sagit/p5-mst-13.2.git] / t / lib / extutils.t
index 599116c..27512fe 100644 (file)
@@ -1,6 +1,6 @@
 #!./perl -w
 
-print "1..8\n";
+print "1..10\n";
 
 BEGIN {
     chdir 't' if -d 't';
@@ -18,6 +18,7 @@ my $runperl = $^X;
 $| = 1;
 
 my $dir = "ext-$$";
+my @files;
 
 print "# $dir being created...\n";
 mkdir $dir, 0777 or die "mkdir: $!\n";
@@ -34,13 +35,14 @@ my @names = ("THREE", {name=>"OK4", type=>"PV",},
              {name=>"OK5", type=>"PVN",
               value=>['"not ok 5\\n\\0ok 5\\n"', 15]},
              {name => "FARTHING", type=>"NV"},
-             {name => "NOT_ZERO", type=>"UV", value=>~0 . "u"});
+             {name => "NOT_ZERO", type=>"UV", value=>"~(UV)0"});
 
 my @names_only = map {(ref $_) ? $_->{name} : $_} @names;
 
 my $package = "ExtTest";
 ################ Header
 my $header = catfile($dir, "test.h");
+push @files, "test.h";
 open FH, ">$header" or die "open >$header: $!\n";
 print FH <<'EOT';
 #define THREE 3
@@ -53,6 +55,7 @@ close FH or die "close $header: $!\n";
 
 ################ XS
 my $xs = catfile($dir, "$package.xs");
+push @files, "$package.xs";
 open FH, ">$xs" or die "open >$xs: $!\n";
 
 print FH <<'EOT';
@@ -74,6 +77,7 @@ close FH or die "close $xs: $!\n";
 
 ################ PM
 my $pm = catfile($dir, "$package.pm");
+push @files, "$package.pm";
 open FH, ">$pm" or die "open >$pm: $!\n";
 print FH "package $package;\n";
 print FH "use $];\n";
@@ -102,6 +106,7 @@ close FH or die "close $pm: $!\n";
 
 ################ test.pl
 my $testpl = catfile($dir, "test.pl");
+push @files, "test.pl";
 open FH, ">$testpl" or die "open >$testpl: $!\n";
 
 print FH "use $package qw(@names_only);\n";
@@ -142,6 +147,7 @@ close FH or die "close $testpl: $!\n";
 ################ dummy Makefile.PL
 # Keep the dependancy in the Makefile happy
 my $makefilePL = catfile($dir, "Makefile.PL");
+push @files, "Makefile.PL";
 open FH, ">$makefilePL" or die "open >$makefilePL: $!\n";
 close FH or die "close $makefilePL: $!\n";
 
@@ -157,11 +163,15 @@ WriteMakefile(
                (#ABSTRACT_FROM => "$package.pm", # XXX add this
                 AUTHOR     => $0) : ())
              );
-if (-f "Makefile") {
+my $makefile = ($^O eq 'VMS' ? 'descrip' : 'Makefile');
+my $makefile_ext = ($^O eq 'VMS' ? '.mms' : '');
+if (-f "$makefile$makefile_ext") {
   print "ok 1\n";
 } else {
   print "not ok 1\n";
 }
+my $makefile_rename = ($^O eq 'VMS' ? '.mms' : '.old');
+push @files, "$makefile$makefile_rename"; # Renamed by make clean
 
 my $make = $Config{make};
 
@@ -178,14 +188,14 @@ if ($?) {
   print "ok 2\n";
 }
 
-$make .= ' test';
-print "# make = '$make'\n";
-$makeout = `$make`;
+my $maketest = "$make test";
+print "# make = '$maketest'\n";
+$makeout = `$maketest`;
 if ($?) {
   print "not ok 8 # $make failed: $?\n";
 } else {
   # Perl babblings
-  $makeout =~ s/^PERL_DL_NONLAZY=.+?\n//m;
+  $makeout =~ s/^\s*PERL_DL_NONLAZY=.+?\n//m;
 
   # GNU make babblings
   $makeout =~ s/^\w*?make.+?(?:entering|leaving) directory.+?\n//mig;
@@ -193,3 +203,30 @@ if ($?) {
   print $makeout;
   print "ok 8\n";
 }
+
+my $makeclean = "$make clean";
+print "# make = '$makeclean'\n";
+$makeout = `$makeclean`;
+if ($?) {
+  print "not ok 9 # $make failed: $?\n";
+} else {
+  print "ok 9\n";
+}
+
+foreach (@files) {
+  unlink $_ or warn "unlink $_: $!";
+}
+
+my $fail;
+opendir DIR, "." or die "opendir '.': $!";
+while (defined (my $entry = readdir DIR)) {
+  next if $entry =~ /^\.\.?$/;
+  print "# Extra file '$entry'\n";
+  $fail = 1;
+}
+closedir DIR or warn "closedir '.': $!";
+if ($fail) {
+  print "not ok 10\n";
+} else {
+  print "ok 10\n";
+}