hush: another testcase for "READONLY_VAR=VAL BLTIN ..."
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 18 Jul 2017 01:23:07 +0000 (03:23 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 18 Jul 2017 01:23:07 +0000 (03:23 +0200)
Currently fails.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/hush_test/hush-vars/readonly0.right
shell/hush_test/hush-vars/readonly0.tests
shell/hush_test/hush-vars/readonly2.right [new file with mode: 0644]
shell/hush_test/hush-vars/readonly2.tests [new file with mode: 0755]

index 07ca6e07f3f917147a0394ca978b2abde7aa110c..8b750eb5f075d8d5129c1715a0542ed0795d5141 100644 (file)
@@ -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
index 3ace9b767ed5349906a7f286a9c344fa46faa894..0833ccf298940f9bb7404918cc68616bf4b775f8 100755 (executable)
@@ -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 (file)
index 0000000..5b02ddf
--- /dev/null
@@ -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 (executable)
index 0000000..d9d178e
--- /dev/null
@@ -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:$?"