From 63878e8aef0bcde3fbd72885a2bf23ac4590d87e Mon Sep 17 00:00:00 2001 From: tg Date: Fri, 25 Nov 2011 23:33:42 +0000 Subject: [PATCH] another couple of verbose checks; the *-global are mksh specific but work; mksh currently fails arrassign-fnc-local (never worked either) --- check.t | 340 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 339 insertions(+), 1 deletion(-) diff --git a/check.t b/check.t index 1a8e218..6d85e61 100644 --- a/check.t +++ b/check.t @@ -1,4 +1,4 @@ -# $MirOS: src/bin/mksh/check.t,v 1.494 2011/11/25 23:29:31 tg Exp $ +# $MirOS: src/bin/mksh/check.t,v 1.495 2011/11/25 23:33:42 tg Exp $ # $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $ # $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $ # $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $ @@ -6425,6 +6425,344 @@ expected-stdout: 1 barbaz . 2 16#a20 . --- +name: arrassign-basic +description: + Check basic whitespace conserving properties of wdarrassign +stdin: + a=($(echo a b)) + b=($(echo "a b")) + c=("$(echo "a b")") + d=("$(echo a b)") + a+=($(echo c d)) + b+=($(echo "c d")) + c+=("$(echo "c d")") + d+=("$(echo c d)") + echo ".a:${a[0]}.${a[1]}.${a[2]}.${a[3]}:" + echo ".b:${b[0]}.${b[1]}.${b[2]}.${b[3]}:" + echo ".c:${c[0]}.${c[1]}.${c[2]}.${c[3]}:" + echo ".d:${d[0]}.${d[1]}.${d[2]}.${d[3]}:" +expected-stdout: + .a:a.b.c.d: + .b:a.b.c.d: + .c:a b.c d..: + .d:a b.c d..: +--- +name: arrassign-fnc-none +description: + Check locality of array access inside a function +stdin: + function fn { + x+=(f) + echo ".fn:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + } + function rfn { + if [[ -n $BASH_VERSION ]]; then + y=() + else + set -A y + fi + y+=(f) + echo ".rfn:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + } + x=(m m) + y=(m m) + echo ".f0:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + fn + echo ".f1:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + fn + echo ".f2:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + echo ".rf0:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + rfn + echo ".rf1:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + rfn + echo ".rf2:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" +expected-stdout: + .f0:m.m..: + .fn:m.m.f.: + .f1:m.m.f.: + .fn:m.m.f.f: + .f2:m.m.f.f: + .rf0:m.m..: + .rfn:f...: + .rf1:f...: + .rfn:f...: + .rf2:f...: +--- +name: arrassign-fnc-local +description: + Check locality of array access inside a function + with the bash/mksh/ksh93 local/typeset keyword + (note: ksh93 has no local; typeset works only in FKSH) +stdin: + function fn { + typeset x + x+=(f) + echo ".fn:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + } + function rfn { + if [[ -n $BASH_VERSION ]]; then + y=() + else + set -A y + fi + typeset y + y+=(f) + echo ".rfn:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + } + function fnr { + typeset z + if [[ -n $BASH_VERSION ]]; then + z=() + else + set -A z + fi + z+=(f) + echo ".fnr:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" + } + x=(m m) + y=(m m) + z=(m m) + echo ".f0:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + fn + echo ".f1:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + fn + echo ".f2:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + echo ".rf0:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + rfn + echo ".rf1:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + rfn + echo ".rf2:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + echo ".f0r:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" + fnr + echo ".f1r:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" + fnr + echo ".f2r:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" +expected-stdout: + .f0:m.m..: + .fn:f...: + .f1:m.m..: + .fn:f...: + .f2:m.m..: + .rf0:m.m..: + .rfn:f...: + .rf1:...: + .rfn:f...: + .rf2:...: + .f0r:m.m..: + .fnr:f...: + .f1r:m.m..: + .fnr:f...: + .f2r:m.m..: +--- +name: arrassign-fnc-global +description: + Check locality of array access inside a function + with the mksh-specific global keyword +stdin: + function fn { + global x + x+=(f) + echo ".fn:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + } + function rfn { + set -A y + global y + y+=(f) + echo ".rfn:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + } + function fnr { + global z + set -A z + z+=(f) + echo ".fnr:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" + } + x=(m m) + y=(m m) + z=(m m) + echo ".f0:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + fn + echo ".f1:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + fn + echo ".f2:${x[0]}.${x[1]}.${x[2]}.${x[3]}:" + echo ".rf0:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + rfn + echo ".rf1:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + rfn + echo ".rf2:${y[0]}.${y[1]}.${y[2]}.${y[3]}:" + echo ".f0r:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" + fnr + echo ".f1r:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" + fnr + echo ".f2r:${z[0]}.${z[1]}.${z[2]}.${z[3]}:" +expected-stdout: + .f0:m.m..: + .fn:m.m.f.: + .f1:m.m.f.: + .fn:m.m.f.f: + .f2:m.m.f.f: + .rf0:m.m..: + .rfn:f...: + .rf1:f...: + .rfn:f...: + .rf2:f...: + .f0r:m.m..: + .fnr:f...: + .f1r:f...: + .fnr:f...: + .f2r:f...: +--- +name: strassign-fnc-none +description: + Check locality of string access inside a function +stdin: + function fn { + x+=f + echo ".fn:$x:" + } + function rfn { + y= + y+=f + echo ".rfn:$y:" + } + x=m + y=m + echo ".f0:$x:" + fn + echo ".f1:$x:" + fn + echo ".f2:$x:" + echo ".rf0:$y:" + rfn + echo ".rf1:$y:" + rfn + echo ".rf2:$y:" +expected-stdout: + .f0:m: + .fn:mf: + .f1:mf: + .fn:mff: + .f2:mff: + .rf0:m: + .rfn:f: + .rf1:f: + .rfn:f: + .rf2:f: +--- +name: strassign-fnc-local +description: + Check locality of string access inside a function + with the bash/mksh/ksh93 local/typeset keyword + (note: ksh93 has no local; typeset works only in FKSH) +stdin: + function fn { + typeset x + x+=f + echo ".fn:$x:" + } + function rfn { + y= + typeset y + y+=f + echo ".rfn:$y:" + } + function fnr { + typeset z + z= + z+=f + echo ".fnr:$z:" + } + x=m + y=m + z=m + echo ".f0:$x:" + fn + echo ".f1:$x:" + fn + echo ".f2:$x:" + echo ".rf0:$y:" + rfn + echo ".rf1:$y:" + rfn + echo ".rf2:$y:" + echo ".f0r:$z:" + fnr + echo ".f1r:$z:" + fnr + echo ".f2r:$z:" +expected-stdout: + .f0:m: + .fn:f: + .f1:m: + .fn:f: + .f2:m: + .rf0:m: + .rfn:f: + .rf1:: + .rfn:f: + .rf2:: + .f0r:m: + .fnr:f: + .f1r:m: + .fnr:f: + .f2r:m: +--- +name: strassign-fnc-global +description: + Check locality of string access inside a function + with the mksh-specific global keyword +stdin: + function fn { + global x + x+=f + echo ".fn:$x:" + } + function rfn { + y= + global y + y+=f + echo ".rfn:$y:" + } + function fnr { + global z + z= + z+=f + echo ".fnr:$z:" + } + x=m + y=m + z=m + echo ".f0:$x:" + fn + echo ".f1:$x:" + fn + echo ".f2:$x:" + echo ".rf0:$y:" + rfn + echo ".rf1:$y:" + rfn + echo ".rf2:$y:" + echo ".f0r:$z:" + fnr + echo ".f1r:$z:" + fnr + echo ".f2r:$z:" +expected-stdout: + .f0:m: + .fn:mf: + .f1:mf: + .fn:mff: + .f2:mff: + .rf0:m: + .rfn:f: + .rf1:f: + .rfn:f: + .rf2:f: + .f0r:m: + .fnr:f: + .f1r:f: + .fnr:f: + .f2r:f: +--- name: varexpand-substr-1 description: Check if bash-style substring expansion works