tests: fix spurious failure due to Solaris XPG4 sh bug

On Solaris 10, the /usr/xpg4/bin/sh shell seems unable to execute
a shell script named 'script':

  $ touch script
  $ /bin/sh script; echo status: $? # As expected.
  status: 0
  $ /usr/xpg4/bin/sh script; echo status: $? # Weirdness follows.
  /usr/xpg4/bin/sh: script: cannot execute
  status: 1

This was causing a spurious testsuite failure for users which have
/usr/xpg4/bin in $PATH before /bin and /usr/bin.  Fix that.

* tests/m4sh.at (Configure re-execs self with CONFIG_SHELL): Rename
the m4sh-produced script to 'script2', to avoid the just-described
issue.
This commit is contained in:
Stefano Lattarini 2012-03-04 17:14:14 +01:00
parent 6e7264cf45
commit 43814d248d

View File

@ -49,6 +49,10 @@ echo foo > sentinel
]])
AT_CHECK_M4SH
# Calling the script simply 'script' could cause problems with
# Solaris /usr/xpg4/bin/sh in the invocation 'sh script' below.
mv -f script script2
AT_DATA([fake-shell],
[[#!/bin/sh
echo 'Fake shell executed.'
@ -61,7 +65,7 @@ done
]])
chmod a+x fake-shell
AT_CHECK([CONFIG_SHELL=./fake-shell ./script 1 2 4 8], [0],
AT_CHECK([CONFIG_SHELL=./fake-shell ./script2 1 2 4 8], [0],
[Fake shell executed.
nargs = 4
:1:
@ -73,7 +77,7 @@ AT_CHECK([test ! -f sentinel], [0])
test ! -f sentinel || rm -f sentinel # Cleanup for next test.
AT_CHECK(
[CONFIG_SHELL=`pwd`/fake-shell sh script a 'b c' ' d e '],
[CONFIG_SHELL=`pwd`/fake-shell sh script2 a 'b c' ' d e '],
[0],
[Fake shell executed.
nargs = 3
@ -85,7 +89,7 @@ AT_CHECK([test ! -f sentinel], [0])
test ! -f sentinel || rm -f sentinel # Cleanup for next test.
AT_CHECK([(PATH=`pwd`:$PATH; export PATH;
CONFIG_SHELL=fake-shell script '' '&' '!;*' '<($[]@%:@)>,' 'x
CONFIG_SHELL=fake-shell script2 '' '&' '!;*' '<($[]@%:@)>,' 'x
y z
1 2 3')], [0],
[Fake shell executed.