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
|
||||
One:1
|
||||
Fail:2
|
||||
Fail:2
|
||||
|
@ -1,7 +1,7 @@
|
||||
readonly bla=123
|
||||
# Bare "eval bla=123" should abort ("eval" is a special builtin):
|
||||
(eval bla=123 2>/dev/null; echo BUG)
|
||||
echo One:$?
|
||||
echo Fail:$?
|
||||
# "command BLTIN" disables "special-ness", should not abort:
|
||||
command eval bla=123 2>/dev/null
|
||||
echo One:$?
|
||||
echo Fail:$?
|
||||
|
Loading…
Reference in New Issue
Block a user