* Ed Hartnett wrote on Tue, Jan 16, 2007 at 03:17:00AM CET: > > I am having a problem on cygwin only. > > I have a test which is expected to fail. In the Makefile.am I have > this: > > TESTFILES = nctst tst_failure > check_PROGRAMS = $(TESTFILES) > nctst_SOURCES = nctst.cpp > tst_failure_SOURCES = tst_failure.cpp > TESTS = $(TESTFILES) run_nc_tests.sh > XFAIL_TESTS = tst_failure
OK to apply this patch to fix this issue? Cheers, Ralf 2007-01-18 Ralf Wildenhues <[EMAIL PROTECTED]> * automake.in (handle_tests): Rewrite XFAIL_TESTS just like TESTS, appending $(EXEEXT), so that matching continues to work on w32. * NEWS: Mention this. * doc/automake.texi (EXEEXT, Extending): Update. * tests/check7.test: New test. * tests/Makefile.am: Adjust. Bug report by Ed Hartnett. Index: NEWS =================================================================== RCS file: /cvs/automake/automake/NEWS,v retrieving revision 1.323 diff -u -r1.323 NEWS --- NEWS 10 Jan 2007 17:57:24 -0000 1.323 +++ NEWS 18 Jan 2007 21:16:44 -0000 @@ -15,6 +15,10 @@ - install-sh supports -C, which does not update the installed file (and its time stamps) if the contents did not change. + - $(EXEEXT) is automatically appended to filenames of XFAIL_TESTS + that have been declared as programs in the same Makefile. + This is for consistency with the analogous change to TESTS in 1.10. + New in 1.10: Index: automake.in =================================================================== RCS file: /cvs/automake/automake/automake.in,v retrieving revision 1.1641 diff -u -r1.1641 automake.in --- automake.in 16 Oct 2006 05:24:17 -0000 1.1641 +++ automake.in 18 Jan 2007 21:16:49 -0000 @@ -4606,7 +4606,10 @@ $output_rules .= &file_contents ('check', new Automake::Location); # Tests that are known programs should have $(EXEEXT) appended. + # For matching purposes, we need to adjust XFAIL_TESTS as well. append_exeext { exists $known_programs{$_[0]} } 'TESTS'; + append_exeext { exists $known_programs{$_[0]} } 'XFAIL_TESTS' + if (var ('XFAIL_TESTS')); } } Index: doc/automake.texi =================================================================== RCS file: /cvs/automake/automake/doc/automake.texi,v retrieving revision 1.162 diff -u -r1.162 automake.texi --- doc/automake.texi 19 Dec 2006 23:52:55 -0000 1.162 +++ doc/automake.texi 18 Jan 2007 21:16:56 -0000 @@ -6572,10 +6572,10 @@ The targets Automake generates are likewise given the @samp{$(EXEEXT)} extension. -The variable @code{TESTS} (@pxref{Tests}) is also rewritten if it -contains filenames that have been declared as programs in the same [EMAIL PROTECTED] (This is mostly useful when some programs from [EMAIL PROTECTED] are listed in @code{TESTS}.) +The variables @code{TESTS}, @code{XFAIL_TESTS} (@pxref{Tests}) are also +rewritten if it contains filenames that have been declared as programs +in the same @file{Makefile}. (This is mostly useful when some programs +from @code{check_PROGRAMS} are listed in @code{TESTS}.) However, Automake cannot apply this rewriting to @command{configure} substitutions. This means that if you are conditionally building a @@ -9055,9 +9055,9 @@ @node Extending @section Extending Automake Rules -With some minor exceptions (like @code{_PROGRAMS} variables being -rewritten to append @samp{$(EXEEXT)}), the contents of a [EMAIL PROTECTED] is copied to @file{Makefile.in} verbatim. +With some minor exceptions (like @code{_PROGRAMS} variables, @code{TESTS}, +or @code{XFAIL_TESTS}) being rewritten to append @samp{$(EXEEXT)}), the +contents of a @file{Makefile.am} is copied to @file{Makefile.in} verbatim. @cindex copying semantics Index: tests/Makefile.am =================================================================== RCS file: /cvs/automake/automake/tests/Makefile.am,v retrieving revision 1.617 diff -u -r1.617 Makefile.am --- tests/Makefile.am 16 Oct 2006 05:24:17 -0000 1.617 +++ tests/Makefile.am 18 Jan 2007 21:16:56 -0000 @@ -86,6 +86,7 @@ check4.test \ check5.test \ check6.test \ +check7.test \ checkall.test \ clean.test \ clean2.test \ --- /dev/null 2007-01-18 22:42:25.684343747 +0100 +++ tests/check7.test 2007-01-18 22:15:09.000000000 +0100 @@ -0,0 +1,70 @@ +#! /bin/sh +# Copyright (C) 2007 Free Software Foundation, Inc. +# +# This file is part of GNU Automake. +# +# GNU Automake is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# GNU Automake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Automake; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# Check EXEEXT extension for XFAIL_TESTS. + +. ./defs || exit 1 + +set -e + +cat >> configure.in << 'END' +AC_PROG_CC +AC_OUTPUT +END + +cat > Makefile.am << 'END' +TESTS = $(XFAIL_TESTS) +XFAIL_TESTS = a b c d +check_PROGRAMS = a c d +check_SCRIPTS = b + +print-xfail-tests: + @echo BEG: $(XFAIL_TESTS) :END +END + +cat >>b <<'END' +#! /bin/sh +exit 1 +END +chmod a+x b + +cat >>a.c <<'END' +#include <stdlib.h> +int main() { return EXIT_FAILURE; } +END + +cp a.c c.c +cp a.c d.c + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +./configure +$MAKE check +EXEEXT=.bin $MAKE -e print-xfail-tests >foo +cat foo +grep 'BEG: a.bin b c.bin d.bin :END' foo + +$MAKE distclean +mkdir build +cd build +../configure +$MAKE check