another couple of verbose checks; the *-global are mksh specific but work;

mksh currently fails arrassign-fnc-local (never worked either)
This commit is contained in:
tg 2011-11-25 23:33:42 +00:00
parent 2ff9255f39
commit 63878e8aef

340
check.t
View File

@ -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