automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1791


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1791-g53339f8
Date: Fri, 27 Jan 2012 16:08:03 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=53339f86ceb32ff98b1ccfb05539645cb7e641fe

The branch, master has been updated
       via  53339f86ceb32ff98b1ccfb05539645cb7e641fe (commit)
      from  bd34a47c51ebc57cce6e9e184630ced52dc71203 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 53339f86ceb32ff98b1ccfb05539645cb7e641fe
Author: Stefano Lattarini <address@hidden>
Date:   Tue Jan 10 20:27:08 2012 +0100

    tests: work around MinGW/MSYS issue in fd redirections
    
    Some checks on $(AM_TESTS_FD_REDIRECT) were failing on MSYS, likely
    because system calls like "write(9, ...)" simply doesn't work for
    MinGW-compiled programs.  Similar usages work for the shell scripts
    though, since /bin/sh is an MSYS program and thus is a lot more
    POSIX-ish than most MinGW-compiled programs.
    
    The best fix for this issue is to separate the checks using shell
    scripts as dummy test cases from the checks using compiled programs
    for the same purpose, and skip these latter checks on MinGW.
    
    This change fixes automake bug#10466.  Report by Peter Rosin.
    
    * tests/parallel-tests-fd-redirect.test: Move checks using compiled
    C programs as test cases to ...
    * tests/parallel-tests-fd-redirect-exeext.test: ... this new test.
    * tests/list-of-tests.mk: Update.

-----------------------------------------------------------------------

Summary of changes:
 tests/list-of-tests.mk                             |    1 +
 ...test => parallel-tests-fd-redirect-exeext.test} |   51 ++++++++---------
 tests/parallel-tests-fd-redirect.test              |   59 ++-----------------
 3 files changed, 33 insertions(+), 78 deletions(-)
 copy tests/{parallel-tests-fd-redirect.test => 
parallel-tests-fd-redirect-exeext.test} (67%)

diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk
index 31d70a7..8bc0ef0 100644
--- a/tests/list-of-tests.mk
+++ b/tests/list-of-tests.mk
@@ -702,6 +702,7 @@ parallel-tests-log-compiler-2.test \
 parallel-tests-dry-run-1.test \
 parallel-tests-dry-run-2.test \
 parallel-tests-fd-redirect.test \
+parallel-tests-fd-redirect-exeext.test \
 parallel-tests-extra-programs.test \
 parallel-tests-unreadable.test \
 parallel-tests-subdir.test \
diff --git a/tests/parallel-tests-fd-redirect.test 
b/tests/parallel-tests-fd-redirect-exeext.test
similarity index 67%
copy from tests/parallel-tests-fd-redirect.test
copy to tests/parallel-tests-fd-redirect-exeext.test
index 8b16378..0f9d6da 100755
--- a/tests/parallel-tests-fd-redirect.test
+++ b/tests/parallel-tests-fd-redirect-exeext.test
@@ -15,11 +15,11 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # parallel-tests support: redirection of file descriptors with
-# AM_TESTS_FD_REDIRECT, even when using tests without suffix, or
-# which are binary executables.
+# AM_TESTS_FD_REDIRECT, for tests which are binary executables
 # We use some tricks to ensure that all code paths in `lib/am/check2.am'
 # are covered, even on platforms where $(EXEEXT) would be naturally empty.
-# See also the more generic test 'check-fd-redirect.test'.
+# See also the more generic test 'check-fd-redirect.test', and
+# sister test 'parallel-tests-fd-redirect.test'.
 
 required='cc native'
 am_parallel_tests=yes
@@ -27,6 +27,16 @@ am_parallel_tests=yes
 
 cat >> configure.in << 'END'
 AC_PROG_CC
+# Calls like "write(9, ...)" are unlikely to work for MinGW-compiled
+# programs.  We must skip this test if this is the case.
+am__ok=no
+AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM([[#include <unistd.h>]],
+                     [[write (9, "foobar\n", 7); return 0;]])],
+    [AM_RUN_LOG([./conftest$EXEEXT 9>&1]) \
+       && AM_RUN_LOG([(./conftest$EXEEXT 9>&1) | grep "^foobar"]) \
+       && am__ok=yes])
+test $am__ok = yes || AS_EXIT([63])
 AM_CONDITIONAL([real_EXEEXT], [test -n "$EXEEXT"])
 test -n "$EXEEXT" || EXEEXT=.bin
 AC_OUTPUT
@@ -34,8 +44,7 @@ END
 
 cat > Makefile.am << 'END'
 AM_TESTS_FD_REDIRECT = 9>&1
-TEST_EXTENSIONS = .test .sh
-TESTS = foo.sh bar $(check_PROGRAMS)
+TESTS = $(check_PROGRAMS)
 check_PROGRAMS = baz qux.test
 qux_test_SOURCES = zardoz.c
 
@@ -51,19 +60,6 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
 
-cat > foo.sh <<'END'
-#!/bin/sh
-echo " foofoofoo" >&9
-END
-chmod a+x foo.sh
-
-cat > bar <<'END'
-#!/bin/sh
-echo " barbarbar" >&9
-END
-
-chmod a+x foo.sh bar
-
 cat > baz.c <<'END'
 #include <stdio.h>
 #include <unistd.h>
@@ -88,28 +84,31 @@ int main (void)
 }
 END
 
-./configure
+st=0; ./configure || st=$?
+cat config.log # For debugging, as we do tricky checks in configure.
+if test $st -eq 63; then
+  skip_ "fd redirect in compiled program unsupported"
+elif test $st -eq 0; then
+  : Continue.
+else
+  fatal_ "unexpected error in ./configure"
+fi
 
 # Sanity checks.
 st=0
-grep '^bar\.log:.*bar' Makefile || st=1
 grep '^baz\.log:.*baz\$(EXEEXT)' Makefile || st=1
 grep '^\.test\$(EXEEXT)\.log:' Makefile || st=1
-$EGREP '^(foo|qux)\.log:' Makefile && st=1
+grep '^qux\.log:' Makefile && st=1
 test $st -eq 0 || fatal_ "doesn't cover expected code paths"
 
 st=0
 $MAKE check >stdout || st=1
 cat stdout
-cat foo.log
-cat bar.log
 cat baz.log
 cat qux.log
 test $st -eq 0
-grep "^ foofoofoo$" stdout
-grep "^ barbarbar$" stdout
 grep "^ bazbazbaz$" stdout
 grep "^ quxquxqux$" stdout
-$EGREP '(foofoofoo|barbarbar|bazbazbaz|quxquxqux)' *.log && Exit 1
+$EGREP '(bazbazbaz|quxquxqux)' *.log && Exit 1
 
 :
diff --git a/tests/parallel-tests-fd-redirect.test 
b/tests/parallel-tests-fd-redirect.test
index 8b16378..f22b31a 100755
--- a/tests/parallel-tests-fd-redirect.test
+++ b/tests/parallel-tests-fd-redirect.test
@@ -15,36 +15,22 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # parallel-tests support: redirection of file descriptors with
-# AM_TESTS_FD_REDIRECT, even when using tests without suffix, or
-# which are binary executables.
-# We use some tricks to ensure that all code paths in `lib/am/check2.am'
-# are covered, even on platforms where $(EXEEXT) would be naturally empty.
+# AM_TESTS_FD_REDIRECT, even when using tests without suffix.
+# The sister `parallel-tests-fd-redirect-exeext.test' do a similar
+# check for tests that are binary executables.
 # See also the more generic test 'check-fd-redirect.test'.
 
-required='cc native'
 am_parallel_tests=yes
 . ./defs || Exit 1
 
 cat >> configure.in << 'END'
-AC_PROG_CC
-AM_CONDITIONAL([real_EXEEXT], [test -n "$EXEEXT"])
-test -n "$EXEEXT" || EXEEXT=.bin
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
 AM_TESTS_FD_REDIRECT = 9>&1
 TEST_EXTENSIONS = .test .sh
-TESTS = foo.sh bar $(check_PROGRAMS)
-check_PROGRAMS = baz qux.test
-qux_test_SOURCES = zardoz.c
-
-## Sanity check.
-if !real_EXEEXT
-check-local:
-       test -f baz.bin
-       test -f qux.test.bin
-endif
+TESTS = foo.sh bar
 END
 
 $ACLOCAL
@@ -64,52 +50,21 @@ END
 
 chmod a+x foo.sh bar
 
-cat > baz.c <<'END'
-#include <stdio.h>
-#include <unistd.h>
-int main (void)
-{
-  ssize_t res = write (9, " bazbazbaz\n", 11);
-  if (res < 0)
-    perror("write failed");
-  return res != 11;
-}
-END
-
-cat > zardoz.c <<'END'
-#include <stdio.h>
-#include <unistd.h>
-int main (void)
-{
-  ssize_t res = write (9, " quxquxqux\n", 11);
-  if (res < 0)
-    perror("write failed");
-  return res != 11;
-}
-END
-
 ./configure
 
 # Sanity checks.
 st=0
 grep '^bar\.log:.*bar' Makefile || st=1
-grep '^baz\.log:.*baz\$(EXEEXT)' Makefile || st=1
-grep '^\.test\$(EXEEXT)\.log:' Makefile || st=1
-$EGREP '^(foo|qux)\.log:' Makefile && st=1
+grep '^foo\.log:' Makefile && st=1
 test $st -eq 0 || fatal_ "doesn't cover expected code paths"
 
-st=0
-$MAKE check >stdout || st=1
+st=0; $MAKE check >stdout || st=1
 cat stdout
 cat foo.log
 cat bar.log
-cat baz.log
-cat qux.log
 test $st -eq 0
 grep "^ foofoofoo$" stdout
 grep "^ barbarbar$" stdout
-grep "^ bazbazbaz$" stdout
-grep "^ quxquxqux$" stdout
-$EGREP '(foofoofoo|barbarbar|bazbazbaz|quxquxqux)' *.log && Exit 1
+$EGREP '(foofoofoo|barbarbar)' *.log && Exit 1
 
 :


hooks/post-receive
-- 
GNU Automake



reply via email to

[Prev in Thread] Current Thread [Next in Thread]