summaryrefslogtreecommitdiffhomepage
path: root/shell/hush_test/hush-vars
diff options
context:
space:
mode:
Diffstat (limited to 'shell/hush_test/hush-vars')
-rw-r--r--shell/hush_test/hush-vars/readonly0.right12
-rwxr-xr-xshell/hush_test/hush-vars/readonly0.tests24
2 files changed, 36 insertions, 0 deletions
diff --git a/shell/hush_test/hush-vars/readonly0.right b/shell/hush_test/hush-vars/readonly0.right
new file mode 100644
index 000000000..9688d2e5f
--- /dev/null
+++ b/shell/hush_test/hush-vars/readonly0.right
@@ -0,0 +1,12 @@
+readonly a=A
+readonly b=B
+Ok:0
+hush: a=A: readonly variable
+Fail:1
+hush: a=A: readonly variable
+Fail:1
+hush: a=A: readonly variable
+Fail:1
+Visible:0
+hush: a: readonly variable
+Fail:1
diff --git a/shell/hush_test/hush-vars/readonly0.tests b/shell/hush_test/hush-vars/readonly0.tests
new file mode 100755
index 000000000..3845f76ac
--- /dev/null
+++ b/shell/hush_test/hush-vars/readonly0.tests
@@ -0,0 +1,24 @@
+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
+
+# 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
+echo Fail:$?; true
+a=A echo Visible:$? # command still runs
+unset a
+echo Fail:$?; true