From f645e1573c5521c87b972400f9b4abc3636983d4 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 18 Jul 2017 03:23:07 +0200 Subject: [PATCH] hush: another testcase for "READONLY_VAR=VAL BLTIN ..." Currently fails. Signed-off-by: Denys Vlasenko --- shell/hush_test/hush-vars/readonly0.right | 6 ++++++ shell/hush_test/hush-vars/readonly0.tests | 16 +++++++++++----- shell/hush_test/hush-vars/readonly2.right | 4 ++++ shell/hush_test/hush-vars/readonly2.tests | 6 ++++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 shell/hush_test/hush-vars/readonly2.right create mode 100755 shell/hush_test/hush-vars/readonly2.tests 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:$?"