Portability enhancements for Mac OSX.
authorPaul Smith <psmith@gnu.org>
Sat, 21 Sep 2013 22:47:26 +0000 (18:47 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 22 Sep 2013 21:09:46 +0000 (17:09 -0400)
Don't dup stdout into stderr in the test suite.
Don't rely on $port_type eq "UNIX" to mean case-preserving.
Check against the real output of ar when creating archives.

tests/ChangeLog
tests/scripts/features/archives
tests/scripts/features/default_names
tests/test_driver.pl

index fee01a860084fa9ef5922e04883a9cb732084596..d149abe32147ab3bea9e9cd616fd128941d10369 100644 (file)
@@ -1,5 +1,14 @@
 2013-09-21  Paul Smith  <psmith@gnu.org>
 
+       * scripts/features/archives: Some versions of ar (MacOSX) generate
+       different output when creating archives.  Run it and verify the
+       real output.
+       * scripts/features/default_names: MacOSX is, like Windows,
+       case-preserving / case-insensitive.  Redo the test to avoid
+       checking for "UNIX".
+       * test_driver.pl (attach_default_output): Don't dup stdout into
+       stderr.  Reported by Denis Excoffier <bug-tar@Denis-Excoffier.org>
+
        * scripts/features/se_explicit: Fix a test that behaves
        differently with/without archive capability enabled.
        * scripts/features/output-sync: Don't test output-sync if it's not
index 4b331c2635e7ad3da55446f752ad7fdaca1249a4..15f433b1eee175ba2ee457d3e874a8588db5e60f 100644 (file)
@@ -11,9 +11,13 @@ exists $FEATURES{archives} or return -1;
 # Create some .o files to work with
 utouch(-60, qw(a1.o a2.o a3.o));
 
+# Some versions of ar print different things on creation.  Find out.
+my $created = `ar rv libxx.a a1.o 2>&1`;
+unlink('libxx.a');
+
 # Very simple
 run_make_test('all: libxx.a(a1.o)',
-              '', "ar rv libxx.a a1.o\nar: creating libxx.a\na - a1.o\n");
+              '', "ar rv libxx.a a1.o\n$created");
 
 # Multiple .o's.  Add a new one to the existing library
 run_make_test('all: libxx.a(a1.o a2.o)',
index e53127e10bc5587b23609dbf39e04c5b7e7327ab..4ce90e5f8049c7e17becf3d858ef3d4f0b543c9f 100644 (file)
@@ -10,32 +10,33 @@ open(MAKEFILE,"> $makefile");
 print MAKEFILE "FIRST: ; \@echo It chose GNUmakefile\n";
 close(MAKEFILE);
 
-# DOS/WIN32 platforms preserve case, but Makefile is the same file as makefile.
-# Just test what we can here (avoid Makefile versus makefile test).
-
-if ($port_type eq 'UNIX') {
-  # Create another makefile called "makefile"
-  open(MAKEFILE,"> makefile");
-  print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
-  close(MAKEFILE);
-}
-
-# Create another makefile called "Makefile"
-open(MAKEFILE,"> Makefile");
-print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
+# Create another makefile called "makefile"
+open(MAKEFILE,"> makefile");
+print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
 close(MAKEFILE);
 
+# DOS/WIN32/MacOSX platforms are case-insensitive / case-preserving, so
+# Makefile is the same file as makefile.  Just test what we can here.
 
-&run_make_with_options("","",&get_logfile);
-&compare_output("It chose GNUmakefile\n",&get_logfile(1));
-unlink $makefile;
-
-if ($port_type eq 'UNIX') {
-  &run_make_with_options("","",&get_logfile);
-  &compare_output("It chose makefile\n",&get_logfile(1));
-  unlink "makefile";
+my $case_sensitive = 0;
+if (! -f 'Makefile') {
+    # Create another makefile called "Makefile"
+    $case_sensitive = 1;
+    open(MAKEFILE,"> Makefile");
+    print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
+    close(MAKEFILE);
 }
 
-&run_make_with_options("","",&get_logfile);
-&compare_output("It chose Makefile\n",&get_logfile(1));
-unlink "Makefile";
+run_make_with_options("","",&get_logfile);
+compare_output("It chose GNUmakefile\n",&get_logfile(1));
+unlink($makefile);
+
+run_make_with_options("","",&get_logfile);
+compare_output("It chose makefile\n",&get_logfile(1));
+unlink("makefile");
+
+if ($case_sensitive) {
+    run_make_with_options("","",&get_logfile);
+    compare_output("It chose Makefile\n",&get_logfile(1));
+    unlink("Makefile");
+}
index 16ae8893fab4d5a7ba3ebf9f048783f3cb0f01ed..457341b184841699caeac940eac358ed75797d7f 100644 (file)
@@ -220,7 +220,7 @@ sub toplevel
     print "s" unless $total_tests_failed == 1;
     print " in $categories_failed Categor";
     print ($categories_failed == 1 ? "y" : "ies");
-    print " Failed (See .$diffext files in $workdir dir for details) :-(\n\n";
+    print " Failed (See .$diffext* files in $workdir dir for details) :-(\n\n";
     return 0;
   }
   else
@@ -752,6 +752,7 @@ sub attach_default_output
   open($dup, '>&', STDOUT) or error("ado: $! duping STDOUT\n", 1);
   push @OUTSTACK, $dup;
 
+  $dup = undef;
   open($dup, '>&', STDERR) or error("ado: $! duping STDERR\n", 1);
   push @ERRSTACK, $dup;