aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/hush_test/hush-vars/readonly0.right6
-rwxr-xr-xshell/hush_test/hush-vars/readonly0.tests16
-rw-r--r--shell/hush_test/hush-vars/readonly2.right4
-rwxr-xr-xshell/hush_test/hush-vars/readonly2.tests6
4 files changed, 27 insertions, 5 deletions
diff --git a/shell/hush_test/hush-vars/readonly0.right b/shell/hush_test/hush-vars/readonly0.right
index 07ca6e07f..8b750eb5f 100644
--- a/shell/hush_test/hush-vars/readonly0.right
+++ b/shell/hush_test/hush-vars/readonly0.right
@@ -1,14 +1,20 @@
readonly a=A
readonly b=B
Ok:0
+
hush: a=A: readonly variable
Fail:1
hush: a=A: readonly variable
Fail:1
+
hush: a=Z: readonly variable
Fail:1
+
hush: a=Z: readonly variable
b=B
^^^a is not exported
+hush: a=Z: readonly variable
+Visible:42
+
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 3ace9b767..0833ccf29 100755
--- a/shell/hush_test/hush-vars/readonly0.tests
+++ b/shell/hush_test/hush-vars/readonly0.tests
@@ -1,5 +1,5 @@
unset a b
-
+#
readonly a=A
b=B
readonly b
@@ -12,6 +12,7 @@ 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)
true; a=A
@@ -19,18 +20,23 @@ 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:$?; true
+echo Fail:$?
#env | grep '^a='
#echo "^^^a is exported"
export -n a # undo that bashism, if it happens
+echo
export b
# this fails to both set and export a:
-a=Z env | grep '^[ab]=' # command still runs
+a=Z env | 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:$?
-unset a
-echo Fail:$?; true
+echo
+true; unset a
+echo Fail:$?
diff --git a/shell/hush_test/hush-vars/readonly2.right b/shell/hush_test/hush-vars/readonly2.right
new file mode 100644
index 000000000..5b02ddfe8
--- /dev/null
+++ b/shell/hush_test/hush-vars/readonly2.right
@@ -0,0 +1,4 @@
+hush: a=Z: readonly variable
+Visible:42
+hush: a=Z: readonly variable
+Visible:42
diff --git a/shell/hush_test/hush-vars/readonly2.tests b/shell/hush_test/hush-vars/readonly2.tests
new file mode 100755
index 000000000..d9d178edd
--- /dev/null
+++ b/shell/hush_test/hush-vars/readonly2.tests
@@ -0,0 +1,6 @@
+unset a
+readonly a=A
+
+# external commands and builtins should behave the same:
+(exit 42); a=Z echo "Visible:$?"
+(exit 42); a=Z env echo "Visible:$?"