diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-25 16:29:36 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-25 16:29:36 +0200 |
commit | b28d4c3462e6b0e66322503f5ef0b941e0bb9cb8 (patch) | |
tree | d25bf78558574cdd8de6b802cf6486f66dfc6db9 /shell/ash_test | |
parent | be669fa1fdff6f751c8cdd3fc18a9fa7a7f46cd3 (diff) |
ash: [VAR] Move unsetvar functionality into setvareq
Upstream commit:
Date: Tue, 25 May 2010 20:55:05 +0800
[VAR] Move unsetvar functionality into setvareq
This patch moves the unsetvar code into setvareq so that we can
no have a pathological case of an unset variable hanging around
unless it has a bit pinning it like VEXPORT.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
function old new delta
setvareq 227 303 +76
expmeta 517 521 +4
localcmd 364 366 +2
unsetcmd 96 76 -20
unsetvar 129 7 -122
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/2 up/down: 82/-142) Total: -60 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash_test')
-rw-r--r-- | shell/ash_test/ash-vars/readonly0.right | 2 | ||||
-rw-r--r-- | shell/ash_test/ash-vars/unset.right | 17 | ||||
-rwxr-xr-x | shell/ash_test/ash-vars/unset.tests | 40 |
3 files changed, 58 insertions, 1 deletions
diff --git a/shell/ash_test/ash-vars/readonly0.right b/shell/ash_test/ash-vars/readonly0.right index f3a6bde9e..ecc4054f8 100644 --- a/shell/ash_test/ash-vars/readonly0.right +++ b/shell/ash_test/ash-vars/readonly0.right @@ -10,4 +10,4 @@ Fail:2 ./readonly0.tests: export: line 27: a: is read only Fail:2 -Fail:1 +./readonly0.tests: unset: line 44: a: is read only diff --git a/shell/ash_test/ash-vars/unset.right b/shell/ash_test/ash-vars/unset.right new file mode 100644 index 000000000..77d5abe9e --- /dev/null +++ b/shell/ash_test/ash-vars/unset.right @@ -0,0 +1,17 @@ +./unset.tests: unset: line 3: -: bad variable name +2 +./unset.tests: unset: line 5: illegal option -m +2 +0 +___ +0 f g +0 g +0 +___ +0 f g +0 +0 f g +0 +___ +./unset.tests: unset: line 36: VAR_RO: is read only +2 f g diff --git a/shell/ash_test/ash-vars/unset.tests b/shell/ash_test/ash-vars/unset.tests new file mode 100755 index 000000000..11b392744 --- /dev/null +++ b/shell/ash_test/ash-vars/unset.tests @@ -0,0 +1,40 @@ +# check invalid options are rejected +# bash: in posix mode, aborts if non-interactive; using subshell to avoid that +(unset -) +echo $? +(unset -m a b c) +echo $? + +# check funky usage +unset +echo $? + +# check normal usage +echo ___ +f=f g=g +echo $? $f $g +unset f +echo $? $f $g +unset g +echo $? $f $g + +echo ___ +f=f g=g +echo $? $f $g +unset f g +echo $? $f $g +f=f g=g +echo $? $f $g +unset -v f g +echo $? $f $g + +# check read only vars +echo ___ +f=f g=g +VAR_RO=1 +readonly VAR_RO +(unset VAR_RO) +echo $? $f $g +# not testing "do variables survive error halfway through unset" since unset aborts +# unset f VAR_RO g +#echo $? $f $g |