summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-09-21 18:47:26 -0400
committerPaul Smith <psmith@gnu.org>2013-09-22 17:09:46 -0400
commit7e77685bc35dd0217ed3c72529b2aaf8466b991d (patch)
tree879e32605bce5c98f823739b522d84b2ff61a3b6 /tests
parent300d1296fb0f8f1b6bd16f977e2167442338343d (diff)
downloadgunmake-7e77685bc35dd0217ed3c72529b2aaf8466b991d.tar.gz
Portability enhancements for Mac OSX.
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.
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog9
-rw-r--r--tests/scripts/features/archives6
-rw-r--r--tests/scripts/features/default_names49
-rw-r--r--tests/test_driver.pl3
4 files changed, 41 insertions, 26 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index fee01a8..d149abe 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -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
diff --git a/tests/scripts/features/archives b/tests/scripts/features/archives
index 4b331c2..15f433b 100644
--- a/tests/scripts/features/archives
+++ b/tests/scripts/features/archives
@@ -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)',
diff --git a/tests/scripts/features/default_names b/tests/scripts/features/default_names
index e53127e..4ce90e5 100644
--- a/tests/scripts/features/default_names
+++ b/tests/scripts/features/default_names
@@ -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");
+}
diff --git a/tests/test_driver.pl b/tests/test_driver.pl
index 16ae889..457341b 100644
--- a/tests/test_driver.pl
+++ b/tests/test_driver.pl
@@ -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;