tests: avoid spurious failure of libtool and gettext tests
authorStefano Lattarini <stefano.lattarini@gmail.com>
Thu, 22 Dec 2011 23:42:24 +0000 (00:42 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Thu, 22 Dec 2011 23:42:24 +0000 (00:42 +0100)
On Solaris 10 (and presumably earlier), /bin/sh trips up on
here-documents that contains a command substitution *and* are
fed to a shell function:

  # All as expected.
  $ cat <<END
  `pwd`
  END
  /home/stefano
  $ echo status = $?
  status = 0

  # An apparently innocuous function ...
  $ kitty () { cat; }
  # ... but hilarity ensues!
  $ kitty <<END
  `pwd`
  END
  /tmp/sh137723: cannot open
  $ echo status = $?
  status = 1

We need to work around this misbehaviour in a couple of our
tests (whose failures where causing cascading failures in a
lot of other tests).

* tests/gettext-macros.test: Avoid the use of command substitution
in a here-document passed to the `indent' function, by using the
`echo' builtin instead.
* tests/libtool-macros.test: Likewise.

See also:
<http://lists.gnu.org/archive/html/bug-autoconf/2011-12/msg00001.html>

ChangeLog
tests/gettext-macros.test
tests/libtool-macros.test

index d97d461..94b1b44 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2011-12-23  Stefano Lattarini  <stefano.lattarini@gmail.com>
+
+       tests: avoid spurious failure of libtool and gettext tests
+
+       On Solaris 10 (and presumably earlier), /bin/sh trips up on
+       here-documents that contains a command substitution *and* are
+       fed to a shell function:
+
+         # All as expected.
+         $ cat <<END
+         `pwd`
+         END
+         /home/stefano
+         $ echo status = $?
+         status = 0
+
+         # An apparently innocuous function ...
+         $ kitty () { cat; }
+         # ... but hilarity ensues!
+         $ kitty <<END
+         `pwd`
+         END
+         /tmp/sh137723: cannot open
+         $ echo status = $?
+         status = 1
+
+       We need to work around this misbehaviour in a couple of our
+       tests (whose failures where causing cascading failures in a
+       lot of other tests).
+
+       * tests/gettext-macros.test: Avoid the use of command substitution
+       in a here-document passed to the `indent' function, by using the
+       `echo' builtin instead.
+       * tests/libtool-macros.test: Likewise.
+
+       See also:
+       <http://lists.gnu.org/archive/html/bug-autoconf/2011-12/msg00001.html>
+
 2011-12-14  Stefano Lattarini  <stefano.lattarini@gmail.com>
 
        tests: better handling of gettext and libtool requirements
index 7fe1274..5dd3a79 100755 (executable)
@@ -46,10 +46,8 @@ else
 fi
 
 if $am_gettextize_command --force && test -f m4/gettext.m4; then
-  unindent >> get.sh <<END
-    ACLOCAL_PATH="`pwd`/m4":\$ACLOCAL_PATH
-    export ACLOCAL_PATH
-END
+  echo "ACLOCAL_PATH='`pwd`/m4':\$ACLOCAL_PATH" >> get.sh
+  echo "export ACLOCAL_PATH" >> get.sh
 else
   # Older versions of gettext might not have a gettextize program
   # available, but this doesn't mean the user hasn't made the gettext
index 31e5019..06a35d9 100755 (executable)
@@ -27,10 +27,8 @@ echo : >> get.sh
 echo ACLOCAL_AMFLAGS = -I m4 > Makefile.am
 
 if libtoolize --copy --install && test -f m4/libtool.m4; then
-  unindent >> get.sh <<END
-    ACLOCAL_PATH="`pwd`/m4":\$ACLOCAL_PATH
-    export ACLOCAL_PATH
-END
+  echo "ACLOCAL_PATH='`pwd`/m4':\$ACLOCAL_PATH" >> get.sh
+  echo "export ACLOCAL_PATH" >> get.sh
 else
   # Libtoolize from libtool < 2.0 didn't support the `--install' option,
   # but this doesn't mean the user hasn't made the libtool macros