diff options
author | jilles <jilles@FreeBSD.org> | 2010-03-13 22:30:52 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2010-03-13 22:30:52 +0000 |
commit | 3b24e7eb73016214a72d46429d6871d117b82325 (patch) | |
tree | 5317282c135ee8e425446b3ac2d8c70f7af9ca27 | |
parent | b5dfb72f0377d3bffc1638b69b8b4298cca90a74 (diff) | |
download | FreeBSD-src-3b24e7eb73016214a72d46429d6871d117b82325.zip FreeBSD-src-3b24e7eb73016214a72d46429d6871d117b82325.tar.gz |
sh: Add test for assignment errors (e.g. trying to change a readonly var).
We currently ignore readonly status for assignments before regular builtins
and external programs (these assignments are not persistent anyway), so just
check that the readonly variable really is not changed.
The test depends on the command builtin changes for 'command :'.
-rw-r--r-- | tools/regression/bin/sh/errors/assignment-error1.0 | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/regression/bin/sh/errors/assignment-error1.0 b/tools/regression/bin/sh/errors/assignment-error1.0 new file mode 100644 index 0000000..9e42f2b --- /dev/null +++ b/tools/regression/bin/sh/errors/assignment-error1.0 @@ -0,0 +1,30 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null,\ + eval,\ + exec,\ + export -p,\ + readonly -p,\ + set,\ + shift,\ + times,\ + trap,\ + unset foo" + +# If there is no command word, the shell must abort on an assignment error. +sh -c "readonly a=0; a=2; exit 0" 2>/dev/null && exit 1 + +# Special built-in utilities must abort on an assignment error. +set -- ${SPECIAL} +for cmd in "$@" +do + sh -c "readonly a=0; a=2 ${cmd}; exit 0" 2>/dev/null && exit 1 +done + +# Other utilities must not abort; we currently still execute them. +sh -c "readonly a=0; a=1 true; exit $a" 2>/dev/null || exit 1 +sh -c "readonly a=0; a=1 command :; exit $a" 2>/dev/null || exit 1 |