]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
More corner cases in testsuite VAR=VALUE handling.
authorEric Blake <ebb9@byu.net>
Tue, 29 Jan 2008 17:24:12 +0000 (10:24 -0700)
committerEric Blake <ebb9@byu.net>
Tue, 29 Jan 2008 17:24:12 +0000 (10:24 -0700)
* 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>
ChangeLog
lib/autotest/general.m4
tests/autotest.at

index 8d592df47a567fa70b6d0c9bf7f801fe6cd6463f..5af0f7d7c3d033c1b20faccc3113d51b32c08ee8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
 
index 25b2d36d918277e05fe68f61425ae4aa54e90fb7..7c45a7a8a47daedb0bc7844adf64f76439ec1fd0 100644 (file)
@@ -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
       ;;
index 2fb36e501c37fdfda2f0b49389dd4c3b9a3f7891..4e016d7657818f900a4bc7067584ae40d3be6b47 100644 (file)
@@ -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])
 ])