Alexandre Duret-Lutz <[EMAIL PROTECTED]> writes: > 4) $ht and $sp do not fail for me. I had to remove these from both > lists of expected failures. Do they fail for you?
No, not now -- now that I'm using the Autoconf patch you just posted. (I haven't investigated why. If you think it important I could, I guess.) > Below is the new version. Thanks. After the recent Autoconf patch to allow | in file names, and some minor cleanups, here is a revised patch (I took your last version and ran with it): 2005-07-03 Paul Eggert <[EMAIL PROTECTED]> * tests/instspc.test: Major rewrite to test for many other problematic file names, e.g., '$', '"', '('. Automake and Autoconf can't handle many of them, so report an expected failure if the usual candidates show up. I'm attaching a patch, and the new version of the file, to avoid problems with control characters in email.
--- instspc.test.~1.3.~ 2005-05-14 13:28:55.000000000 -0700 +++ instspc.test 2005-07-03 23:51:01.000000000 -0700 @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2004 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is part of GNU Automake. # @@ -18,12 +18,13 @@ # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. -# Check that installation to directory with spaces succeed. -# Report from James Amundson. +# Check that installation to directory with shell metacharacters succeed. +# Original report from James Amundson about file names with spaces. +# Other characters added by Paul Eggert. # This is mostly the same input as nobase.test, but we do not use # libtool libraries, because Libtool does not preserve space in -# filenames (Issue observed with ltmain.sh (GNU libtool) 1.5a (1.1323 +# file names (Issue observed with ltmain.sh (GNU libtool) 1.5a (1.1323 # 2003/11/10 21:06:47)) @@ -32,8 +33,7 @@ required='gcc' set -e -# Make sure this system supports spaces in filenames. -mkdir 'a b' || exit 77 +# Set up files that won't change each time through the loop. cat >> configure.in <<'EOF' AC_PROG_CC @@ -41,6 +41,24 @@ AC_PROG_RANLIB AC_OUTPUT EOF +mkdir sub + +: > sub/base.h +: > sub/nobase.h +: > sub/base.dat +: > sub/nobase.dat +: > sub/base.sh +: > sub/nobase.sh + +cat >source.c <<'EOF' +int +main (int argc, char **argv) +{ + return 0; +} +EOF +cp source.c source2.c + cat > Makefile.am << 'EOF' foodir = $(prefix)/foo fooexecdir = $(prefix)/foo @@ -64,50 +82,115 @@ nobase_fooexec_LIBRARIES = sub/libnobase sub_libbase_a_SOURCES = source.c sub_libnobase_a_SOURCES = source.c -test-install-space: install - test -f "$(DESTDIR)/more space/foo/sub/nobase.h" - test ! -f "$(DESTDIR)/more space/foo/nobase.h" - test -f "$(DESTDIR)/more space/foo/base.h" - test -f "$(DESTDIR)/more space/foo/sub/nobase.dat" - test ! -f "$(DESTDIR)/more space/foo/nobase.dat" - test -f "$(DESTDIR)/more space/foo/base.dat" - test -f "$(DESTDIR)/more space/foo/sub/nobase.sh" - test ! -f "$(DESTDIR)/more space/foo/nobase.sh" - test -f "$(DESTDIR)/more space/foo/base.sh" - test -f "$(DESTDIR)/more space/foo/sub/nobase$(EXEEXT)" - test ! -f "$(DESTDIR)/more space/foo/nobase$(EXEEXT)" - test -f "$(DESTDIR)/more space/foo/base$(EXEEXT)" - test -f "$(DESTDIR)/more space/foo/sub/libnobase.a" - test ! -f "$(DESTDIR)/more space/foo/libnobase.a" - test -f "$(DESTDIR)/more space/foo/libbase.a" +test-install-sep: install + test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.h' + test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.h' + test -f '$(DESTDIR)/$(file)-prefix/foo/base.h' + test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.dat' + test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.dat' + test -f '$(DESTDIR)/$(file)-prefix/foo/base.dat' + test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.sh' + test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.sh' + test -f '$(DESTDIR)/$(file)-prefix/foo/base.sh' + test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase$(EXEEXT)' + test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase$(EXEEXT)' + test -f '$(DESTDIR)/$(file)-prefix/foo/base$(EXEEXT)' + test -f '$(DESTDIR)/$(file)-prefix/foo/sub/libnobase.a' + test ! -f '$(DESTDIR)/$(file)-prefix/foo/libnobase.a' + test -f '$(DESTDIR)/$(file)-prefix/foo/libbase.a' EOF -mkdir sub - -: > sub/base.h -: > sub/nobase.h -: > sub/base.dat -: > sub/nobase.dat -: > sub/base.sh -: > sub/nobase.sh - -cat >source.c <<'EOF' -int -main (int argc, char *argv[]) -{ - return 0; -} -EOF -cp source.c source2.c - $ACLOCAL $AUTOCONF $AUTOMAKE -a -mkdir build -cd build +# Some control characters that are white space: +# back space, carriage return, form feed, horizontal tab, line feed, space +bs='' +cr=' ' +ff='' +ht=' ' +lf=' +' +sp=' ' + +build_failures= +install_failures= + +for file in \ + '!' '"' '#' '$' '%' '&' \' '(' ')' '*' '+' ',' '-' ':' ';' \ + '<' '=' '>' '?' '@' '[' '\' ']' '^' '`' '{' '|' '}' '~' \ + "$bs" "$cr" "$ff" "$ht" "$lf" "$sp" \ + '@<:@' '@:>@' '@S|@' '@%:@' '@&t@' \ + "a${sp}b" "a${sp}${sp}b" "a${lf}b" ... a: +do + for test in build install; do + case $test in + build) + build=$file + dest=`pwd`/sub1;; + install) + build=sub1 + dest=`pwd`/$file;; + esac + + # Make sure this system supports this character in file names. + mkdir sub1 "./$file" || exit 77 + + cd "$build" + + ../configure --prefix "/$file-prefix" && + $MAKE && + DESTDIR=$dest file=$file $MAKE -e test-install-sep || + eval "${test}_failures=\"\$${test}_failures$lf\$file\"" + + cd .. + + rm -fr sub1 "./$file" + done +done + +# The list of the above file names that cannot be used as a build directory +# on a POSIX host. This list should be empty, but is not due to limitations +# in Autoconf, Automake, Make, or M4. +expected_build_failures=' +" +# +$ +% +& +'\'' +\ +` +'"$lf"' [EMAIL PROTECTED]:@ +@&t@ +a'"${lf}"'b' + +# Similarly, the list of file names that cannot be used as an install directory +# on a POSIX host. This list should also be empty. +expected_install_failures=' +" +# +$ +% +'\'' +* +` +'"$lf"' [EMAIL PROTECTED]:@ +a'"${lf}"'b' + +fail=0 +for test in build install; do + eval failures=\$${test}_failures + case $failures in + ?*) + cat >&2 <<EOF +$0: $test test failed for the following file names:$failures +EOF + eval test \"\$failures\" = \"\$expected_${test}_failures\" || fail=1 + esac +done -../configure --prefix '/more space' -$MAKE -dest=`pwd`/'with space'; -DESTDIR=$dest $MAKE -e test-install-space +exit $fail
instspc.test
Description: resulting file