aboutsummaryrefslogtreecommitdiff
path: root/shell/hush_test/hush-vars
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-07-18 02:44:06 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-07-18 02:44:06 +0200
commit5b2cc0aaee6985431d9bab1b49ceea7e1fa1d7af (patch)
tree456dfbf0232f7d0b0482bcc2eef96b6085fe98bd /shell/hush_test/hush-vars
parent38ef39a1abd46ca390b0259ebd0b35e9ea9ccb68 (diff)
downloadbusybox-5b2cc0aaee6985431d9bab1b49ceea7e1fa1d7af.tar.gz
hush: do not assign to readonly VAR in "VAR=VAL CMD" syntax too
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test/hush-vars')
-rw-r--r--shell/hush_test/hush-vars/readonly0.right6
-rwxr-xr-xshell/hush_test/hush-vars/readonly0.tests30
2 files changed, 25 insertions, 11 deletions
diff --git a/shell/hush_test/hush-vars/readonly0.right b/shell/hush_test/hush-vars/readonly0.right
index 9688d2e5f..07ca6e07f 100644
--- a/shell/hush_test/hush-vars/readonly0.right
+++ b/shell/hush_test/hush-vars/readonly0.right
@@ -5,8 +5,10 @@ hush: a=A: readonly variable
Fail:1
hush: a=A: readonly variable
Fail:1
-hush: a=A: readonly variable
+hush: a=Z: readonly variable
Fail:1
-Visible:0
+hush: a=Z: readonly variable
+b=B
+^^^a is not exported
hush: a: readonly variable
Fail:1
diff --git a/shell/hush_test/hush-vars/readonly0.tests b/shell/hush_test/hush-vars/readonly0.tests
index 3845f76ac..3ace9b767 100755
--- a/shell/hush_test/hush-vars/readonly0.tests
+++ b/shell/hush_test/hush-vars/readonly0.tests
@@ -1,10 +1,12 @@
+unset a b
+
readonly a=A
b=B
readonly b
-# readonly on already readonly var is harmless
+# readonly on already readonly var is harmless:
readonly b a
readonly | grep '^readonly [ab]='
-# this should work
+# this should work:
export a b
export -n a b
echo Ok:$?
@@ -12,13 +14,23 @@ env | grep -e^a= -e^b= # shows nothing
# these should all fail (despite the same value being assigned)
# bash does not abort even in non-interactive more (in script)
-true
-a=A
-echo Fail:$?; true
-readonly a=A
-echo Fail:$?; true
-export a=A
+true; a=A
+echo Fail:$?
+true; readonly a=A
+echo Fail:$?
+
+# in bash, assignment in export fails, but export succeeds! :)
+# we don't mimic that!
+true; export a=Z
echo Fail:$?; true
-a=A echo Visible:$? # command still runs
+#env | grep '^a='
+#echo "^^^a is exported"
+export -n a # undo that bashism, if it happens
+
+export b
+# this fails to both set and export a:
+a=Z env | grep '^[ab]=' # command still runs
+echo "^^^a is not exported"
+
unset a
echo Fail:$?; true