From 7e77685bc35dd0217ed3c72529b2aaf8466b991d Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 21 Sep 2013 18:47:26 -0400 Subject: 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. --- tests/ChangeLog | 9 +++++++ tests/scripts/features/archives | 6 ++++- tests/scripts/features/default_names | 49 ++++++++++++++++++------------------ tests/test_driver.pl | 3 ++- 4 files changed, 41 insertions(+), 26 deletions(-) (limited to 'tests') 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 + * 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 + * 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; -- cgit v1.2.3