From 3099e79d25cd1cb1f718a060eadb4bb55080d816 Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Wed, 9 Dec 2020 21:32:36 -0800 Subject: Make DECLAREDNULL require POSIXBUILTINS and introduce a new test file. V10private has been made agnostic to POSIXBUILTINS. --- Test/E03posix.ztst | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Test/E03posix.ztst diff --git a/Test/E03posix.ztst b/Test/E03posix.ztst new file mode 100644 index 000000000..5e6eddeba --- /dev/null +++ b/Test/E03posix.ztst @@ -0,0 +1,105 @@ +# Test POSIX-specific behavior +# Currently this covers only POSIXBUILTINS, other behaviors are in their +# more directly related sections +# + +%prep + setopt POSIX_BUILTINS + +%test + + local parentenv=preserved + fn() { + typeset -h +g -m \* + unset -m \* + integer i=9 + float -H f=9 + declare -t scalar + declare -H -a array + typeset + typeset + + } + fn + echo $parentenv +0:Parameter hiding and tagging, printing types and values +>array local array +>float local f +>integer local i=9 +>local tagged scalar +>array local array +>float local f +>integer local i +>local tagged scalar +>preserved + + readonly foo=bar novalue + readonly -p +0:readonly -p output (no readonly specials) +>readonly foo=bar +>readonly novalue + + local -a myarray + typeset -p1 myarray + myarray=("&" sand '""' "" plugh) + typeset -p1 myarray +0:typeset -p1 output for array +>typeset -a myarray +>typeset -a myarray=( +> '&' +> sand +> '""' +> '' +> plugh +>) + + local -A myhash + typeset -p1 myhash + myhash=([one]=two [three]= [four]="[]") + typeset -p1 myhash +0:typeset -p1 output for associative array +>typeset -A myhash +>typeset -A myhash=( +> [four]='[]' +> [one]=two +> [three]='' +>) + + str=s + arr=(a) + typeset -A ass + ass=(a a) + integer i=0 + float f=0 + print ${(t)str} ${(t)arr} ${(t)ass} ${(t)i} ${(t)f} +0:${(t)...} +>scalar array association-local integer-local float-local + + print $empty[(i)] $empty[(I)] +0:(i) and (I) return nothing for empty array +> + + ( + # reserved words are handled during parsing, + # hence eval... + disable -r typeset + eval ' + setopt kshtypeset + ktvars=(ktv1 ktv2) + typeset ktfoo=`echo arg1 arg2` $ktvars + () { + local ktfoo + print $+ktv1 $+ktv2 $+ktv3 $+ktfoo + } + print $ktfoo + unsetopt kshtypeset + typeset noktfoo=`echo noktarg1 noktarg2` + print $noktfoo + print $+noktarg1 $+noktarg2 + unset ktfoo ktv1 ktv2 noktfoo noktarg2 + ' + ) +0:KSH_TYPESET option +>0 0 0 0 +>arg1 arg2 +>noktarg1 +>0 0 -- cgit 1.4.1