mirror of
git://git.sv.gnu.org/autoconf
synced 2025-02-17 14:01:27 +08:00
More corner cases in testsuite VAR=VALUE handling.
* lib/autotest/general.m4 (AT_INIT) <PREPARE_TESTS): Fix quoting bug. <PARSE_ARGS_END>: Also detect leading digits in assignments. * tests/autotest.at (Using atlocal): Enhance test to catch last bug. Signed-off-by: Eric Blake <ebb9@byu.net>
This commit is contained in:
parent
9935105de6
commit
66b8003184
@ -1,5 +1,12 @@
|
||||
2008-01-29 Eric Blake <ebb9@byu.net>
|
||||
|
||||
More corner cases in testsuite VAR=VALUE handling.
|
||||
* lib/autotest/general.m4 (AT_INIT) <PREPARE_TESTS): Fix quoting
|
||||
bug.
|
||||
<PARSE_ARGS_END>: Also detect leading digits in assignments.
|
||||
* tests/autotest.at (Using atlocal): Enhance test to catch last
|
||||
bug.
|
||||
|
||||
* doc/autoconf.texi (Limitations of Builtins) <.>: Mention bash
|
||||
bug.
|
||||
|
||||
|
@ -525,11 +525,11 @@ do
|
||||
|
||||
# Directory selection.
|
||||
--directory | -C )
|
||||
at_prev=--directory
|
||||
at_prev=--directory
|
||||
;;
|
||||
--directory=* )
|
||||
at_change_dir=:
|
||||
at_dir=$at_optarg
|
||||
at_change_dir=:
|
||||
at_dir=$at_optarg
|
||||
;;
|
||||
|
||||
# Keywords.
|
||||
@ -569,9 +569,10 @@ m4_divert_push([PARSE_ARGS_END])dnl
|
||||
*=*)
|
||||
at_envvar=`expr "x$at_option" : 'x\([[^=]]*\)='`
|
||||
# Reject names that are not valid shell variable names.
|
||||
test "x$at_envvar" = "x" ||
|
||||
expr "x$at_envvar" : "[.*[^_$as_cr_alnum]]" >/dev/null &&
|
||||
AS_ERROR([invalid variable name: $at_envvar])
|
||||
case $at_envvar in
|
||||
'' | [[0-9]]* | *[[!_$as_cr_alnum]]* )
|
||||
AS_ERROR([invalid variable name: $at_envvar]) ;;
|
||||
esac
|
||||
at_value=`AS_ECHO(["$at_optarg"]) | sed "s/'/'\\\\\\\\''/g"`
|
||||
# Export now, but save eval for later and for debug scripts.
|
||||
export $at_envvar
|
||||
@ -719,7 +720,7 @@ done
|
||||
: ${at_top_build_prefix=$at_top_builddir}
|
||||
|
||||
# Perform any assignments requested during argument parsing.
|
||||
eval $at_debug_args
|
||||
eval "$at_debug_args"
|
||||
|
||||
# atconfig delivers names relative to the directory the test suite is
|
||||
# in, but the groups themselves are run in testsuite-dir/group-dir.
|
||||
@ -1033,7 +1034,7 @@ _ATEOF
|
||||
if test -d "$at_group_dir"; then
|
||||
find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
|
||||
rm -fr "$at_group_dir"
|
||||
fi
|
||||
fi
|
||||
rm -f "$at_test_source"
|
||||
fi
|
||||
;;
|
||||
|
@ -398,16 +398,16 @@ AT_CHECK([(cd micro-suite.dir/1 && ./run MY_VAR='one space')],
|
||||
|
||||
# Setting default variable values via atlocal.
|
||||
AT_CHECK_AT_TEST([Using atlocal],
|
||||
[AT_CHECK([test "x$MY_VAR" = xset || exit 42])],
|
||||
[AT_CHECK([test "x$MY_VAR" = "xodd; 'string" || exit 42])],
|
||||
[], [1], [ignore], [ignore], [
|
||||
dnl check that command line can set variable
|
||||
AT_CHECK([$CONFIG_SHELL ./micro-suite MY_VAR=set], [0], [ignore])
|
||||
AT_CHECK([$CONFIG_SHELL ./micro-suite MY_VAR="odd; 'string"], [0], [ignore])
|
||||
dnl check that command line overrides environment
|
||||
AT_CHECK([MY_VAR=set $CONFIG_SHELL ./micro-suite MY_VAR=unset],
|
||||
AT_CHECK([MY_VAR="odd; 'string" $CONFIG_SHELL ./micro-suite MY_VAR=unset],
|
||||
[1], [ignore], [ignore])
|
||||
dnl check that atlocal can give it a default
|
||||
AT_CHECK([cat <<EOF >atlocal
|
||||
MY_VAR=set
|
||||
MY_VAR="odd; 'string"
|
||||
export MY_VAR
|
||||
dnl Also populate enough of atlocal to do what atconfig normally does.
|
||||
at_testdir=.
|
||||
@ -427,6 +427,7 @@ dnl check that command line overrides atlocal
|
||||
AT_CHECK([$CONFIG_SHELL ./micro-suite MY_VAR=], [1], [ignore], [ignore])
|
||||
dnl check that syntax error is detected
|
||||
AT_CHECK([$CONFIG_SHELL ./micro-suite =], [1], [], [ignore], [ignore])
|
||||
AT_CHECK([$CONFIG_SHELL ./micro-suite 1=2], [1], [], [ignore], [ignore])
|
||||
])
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user