ash: suppress readonly1.tests false positive; add readonly0.tests
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
42ba757d5e
commit
0eed355eac
13
shell/ash_test/ash-vars/readonly0.right
Normal file
13
shell/ash_test/ash-vars/readonly0.right
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
readonly a='A'
|
||||||
|
readonly b='B'
|
||||||
|
Ok:0
|
||||||
|
|
||||||
|
./readonly0.tests: line 19: a: is read only
|
||||||
|
Fail:2
|
||||||
|
./readonly0.tests: readonly: line 21: a: is read only
|
||||||
|
Fail:2
|
||||||
|
|
||||||
|
./readonly0.tests: export: line 27: a: is read only
|
||||||
|
Fail:2
|
||||||
|
|
||||||
|
Fail:1
|
45
shell/ash_test/ash-vars/readonly0.tests
Executable file
45
shell/ash_test/ash-vars/readonly0.tests
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
unset a b
|
||||||
|
#
|
||||||
|
readonly a=A
|
||||||
|
b=B
|
||||||
|
readonly b
|
||||||
|
# readonly on already readonly var is harmless:
|
||||||
|
readonly b a
|
||||||
|
readonly | grep '^readonly [ab]='
|
||||||
|
# this should work:
|
||||||
|
export a b
|
||||||
|
export -n a b
|
||||||
|
echo Ok:$?
|
||||||
|
env | grep -e^a= -e^b= # shows nothing
|
||||||
|
|
||||||
|
echo
|
||||||
|
# these should all fail (despite the same value being assigned)
|
||||||
|
# bash does not abort even in non-interactive more (in script)
|
||||||
|
# ash does, using subshell to continue
|
||||||
|
true; (a=A)
|
||||||
|
echo Fail:$?
|
||||||
|
true; (readonly a=A)
|
||||||
|
echo Fail:$?
|
||||||
|
|
||||||
|
echo
|
||||||
|
# in bash, assignment in export fails, but export succeeds! :)
|
||||||
|
# we don't mimic that!
|
||||||
|
true; (export a=Z)
|
||||||
|
echo Fail:$?
|
||||||
|
#env | grep '^a='
|
||||||
|
#echo "^^^a is exported"
|
||||||
|
export -n a # undo that bashism, if it happens
|
||||||
|
|
||||||
|
## ash: assignment errors in "a=Z CMD" lead to CMD not executed
|
||||||
|
## echo
|
||||||
|
## export b
|
||||||
|
## # this fails to both set and export a:
|
||||||
|
## a=Z env | echo grep '^[ab]='
|
||||||
|
## echo "^^^a is not exported"
|
||||||
|
## # but external command does get executed, and $? is not mangled (stays 42):
|
||||||
|
## (exit 42); a=Z env echo Visible:$?
|
||||||
|
|
||||||
|
echo
|
||||||
|
# ash: this fails *silently*, bug? bash says "cannot unset: readonly variable"
|
||||||
|
true; unset a
|
||||||
|
echo Fail:$?
|
@ -1,2 +1,2 @@
|
|||||||
One:1
|
Fail:2
|
||||||
One:1
|
Fail:2
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
readonly bla=123
|
readonly bla=123
|
||||||
# Bare "eval bla=123" should abort ("eval" is a special builtin):
|
# Bare "eval bla=123" should abort ("eval" is a special builtin):
|
||||||
(eval bla=123 2>/dev/null; echo BUG)
|
(eval bla=123 2>/dev/null; echo BUG)
|
||||||
echo One:$?
|
echo Fail:$?
|
||||||
# "command BLTIN" disables "special-ness", should not abort:
|
# "command BLTIN" disables "special-ness", should not abort:
|
||||||
command eval bla=123 2>/dev/null
|
command eval bla=123 2>/dev/null
|
||||||
echo One:$?
|
echo Fail:$?
|
||||||
|
Loading…
Reference in New Issue
Block a user