[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1791-g53339f8,
Stefano Lattarini <=