diff options
Diffstat (limited to 'src/check.t')
-rw-r--r-- | src/check.t | 212 |
1 files changed, 145 insertions, 67 deletions
diff --git a/src/check.t b/src/check.t index a750c50..8818822 100644 --- a/src/check.t +++ b/src/check.t @@ -1,4 +1,4 @@ -# $MirOS: src/bin/mksh/check.t,v 1.838 2020/04/13 19:51:08 tg Exp $ +# $MirOS: src/bin/mksh/check.t,v 1.845 2020/05/16 22:19:15 tg Exp $ # -*- mode: sh -*- #- # Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, @@ -31,7 +31,7 @@ # (2013/12/02 20:39:44) http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/regress/bin/ksh/?sortby=date expected-stdout: - KSH R59 2020/04/14 + KSH R59 2020/05/16 description: Check base version of full shell stdin: @@ -8082,45 +8082,50 @@ name: test-str-pattern description: Check that [[ x = $y ]] can take extglobs, like ksh93 stdin: + [[ -n $BASH_VERSION ]] && shopt -s extglob + function one { + n=$1 x=$2 y=$3 z=${4:-$3} + [[ $x = $y ]]; a=$? + [[ $x = "$y" ]]; b=$? + eval '[[ $x = '"$z"' ]]; c=$?' + eval '[[ $x = "'"$z"'" ]]; d=$?' + echo $n $a $b $c $d . + } x='a\' - [[ $x = a\ ]]; echo 1 $? . - [[ $x = a\\ ]]; echo 2 $? . - y='a\' - [[ $x = $y ]]; echo 3 $? . - [[ $x = "$y" ]]; echo 4 $? . - x='a\b' - y='a\b' - [[ $x = $y ]]; echo 5 $? . - [[ $x = "$y" ]]; echo 6 $? . - y='a\\b' - [[ $x = $y ]]; echo 7 $? . - [[ $x = "$y" ]]; echo 8 $? . - x='foo' - y='f+(o)' - [[ $x = $y ]]; echo 9 $? . - [[ $x = "$y" ]]; echo 10 $? . - x=$y - [[ $x = $y ]]; echo 11 $? . - [[ $x = "$y" ]]; echo 12 $? . + [[ $x = a\ ]]; echo 01 $? . + [[ $x = a\\ ]]; echo 02 $? . + one 03 'a\' 'a\' 'a\\' + one 04 'a\b' 'a\b' + one 05 'a\b' 'a\\b' + one 06 'foo' 'f+(o)' + one 07 'f+(o)' 'f+(o)' + one 08 'f+(o' 'f+(o' 'f+\(o' + one 09 foo 'f+(o' 'f+\(o' + one 10 abcde 'a\*e' + one 11 'a*e' 'a\*e' + one 12 'a\*e' 'a\*e' + echo extras: x='f+(o' - y=$x - [[ $x = $y ]]; echo 13 $? . - [[ $x = "$y" ]]; echo 14 $? . -expected-stdout: - 1 1 . - 2 0 . - 3 0 . - 4 0 . - 5 1 . - 6 0 . - 7 0 . - 8 1 . - 9 0 . - 10 1 . - 11 1 . - 12 0 . - 13 0 . - 14 0 . + z='f+(o' + eval '[[ $x = "'"$z"'" ]]; echo 14 $? "(08:4)" .' + x=foo + eval '[[ $x = "'"$z"'" ]]; echo 15 $? "(09:4)" .' +expected-stdout: + 01 1 . + 02 0 . + 03 0 0 0 0 . + 04 1 0 1 0 . + 05 0 1 0 0 . + 06 0 1 0 1 . + 07 1 0 1 0 . + 08 0 0 0 1 . + 09 1 1 1 1 . + 10 1 1 1 1 . + 11 0 1 0 1 . + 12 1 0 1 0 . + extras: + 14 0 (08:4) . + 15 1 (09:4) . --- name: test-precedence-1 description: @@ -8448,8 +8453,10 @@ description: stdin: set -o braceexpand set +o sh - [[ $(set +o) == *@(-o sh)@(| *) ]] && echo sh || echo nosh - [[ $(set +o) == *@(-o braceexpand)@(| *) ]] && echo brex || echo nobrex + [[ -o sh ]] && echo sh + [[ -o !sh ]] && echo nosh + [[ -o braceexpand ]] && echo brex + [[ -o !braceexpand ]] && echo nobrex echo {a,b,c} set +o braceexpand echo {a,b,c} @@ -8457,12 +8464,17 @@ stdin: echo {a,b,c} set -o sh echo {a,b,c} - [[ $(set +o) == *@(-o sh)@(| *) ]] && echo sh || echo nosh - [[ $(set +o) == *@(-o braceexpand)@(| *) ]] && echo brex || echo nobrex + [[ -o sh ]] && echo sh + [[ -o !sh ]] && echo nosh + [[ -o braceexpand ]] && echo brex + [[ -o !braceexpand ]] && echo nobrex set -o braceexpand echo {a,b,c} - [[ $(set +o) == *@(-o sh)@(| *) ]] && echo sh || echo nosh - [[ $(set +o) == *@(-o braceexpand)@(| *) ]] && echo brex || echo nobrex + [[ -o sh ]] && echo sh + [[ -o !sh ]] && echo nosh + [[ -o braceexpand ]] && echo brex + [[ -o !braceexpand ]] && echo nobrex + [[ $(exec -a -set "$__progname" -o) = *login+(' ')on* ]]; echo $? expected-stdout: nosh brex @@ -8475,44 +8487,110 @@ expected-stdout: a b c sh brex + 0 --- name: sh-mode-2a description: Check that posix or sh mode is *not* automatically turned on category: !binsh stdin: - ln -s "$__progname" ksh || cp "$__progname" ksh - ln -s "$__progname" sh || cp "$__progname" sh - ln -s "$__progname" ./-ksh || cp "$__progname" ./-ksh - ln -s "$__progname" ./-sh || cp "$__progname" ./-sh - for shell in {,-}{,k}sh; do - print -- $shell $(./$shell +l -c \ - '[[ $(set +o) == *"-o "@(sh|posix)@(| *) ]] && echo sh || echo nosh') + for shell in {,-}{,r}{,k,mk}sh {,-}{,R}{,K,MK}SH.EXE; do + ln -s "$__progname" ./$shell || cp "$__progname" ./$shell + print -- $shell $(./$shell +l -c ' + [[ -o sh || -o posix ]] && echo sh + [[ -o !sh && -o !posix ]] && echo nosh + [[ -o restricted ]] && echo lim || echo ok + ') done expected-stdout: - sh nosh - ksh nosh - -sh nosh - -ksh nosh + sh nosh ok + ksh nosh ok + mksh nosh ok + rsh nosh lim + rksh nosh lim + rmksh nosh lim + -sh nosh ok + -ksh nosh ok + -mksh nosh ok + -rsh nosh lim + -rksh nosh lim + -rmksh nosh lim + SH.EXE nosh ok + KSH.EXE nosh ok + MKSH.EXE nosh ok + RSH.EXE nosh lim + RKSH.EXE nosh lim + RMKSH.EXE nosh lim + -SH.EXE nosh ok + -KSH.EXE nosh ok + -MKSH.EXE nosh ok + -RSH.EXE nosh lim + -RKSH.EXE nosh lim + -RMKSH.EXE nosh lim --- name: sh-mode-2b description: Check that posix or sh mode *is* automatically turned on category: binsh stdin: - ln -s "$__progname" ksh || cp "$__progname" ksh - ln -s "$__progname" sh || cp "$__progname" sh - ln -s "$__progname" ./-ksh || cp "$__progname" ./-ksh - ln -s "$__progname" ./-sh || cp "$__progname" ./-sh - for shell in {,-}{,k}sh; do - print -- $shell $(./$shell +l -c \ - '[[ $(set +o) == *"-o "@(sh|posix)@(| *) ]] && echo sh || echo nosh') + for shell in {,-}{,r}{,k,mk}sh {,-}{,R}{,K,MK}SH.EXE; do + ln -s "$__progname" ./$shell || cp "$__progname" ./$shell + print -- $shell $(./$shell +l -c ' + [[ -o sh || -o posix ]] && echo sh + [[ -o !sh && -o !posix ]] && echo nosh + [[ -o restricted ]] && echo lim || echo ok + ') done expected-stdout: - sh sh - ksh nosh - -sh sh - -ksh nosh + sh sh ok + ksh nosh ok + mksh nosh ok + rsh sh lim + rksh nosh lim + rmksh nosh lim + -sh sh ok + -ksh nosh ok + -mksh nosh ok + -rsh sh lim + -rksh nosh lim + -rmksh nosh lim + SH.EXE sh ok + KSH.EXE nosh ok + MKSH.EXE nosh ok + RSH.EXE sh lim + RKSH.EXE nosh lim + RMKSH.EXE nosh lim + -SH.EXE sh ok + -KSH.EXE nosh ok + -MKSH.EXE nosh ok + -RSH.EXE sh lim + -RKSH.EXE nosh lim + -RMKSH.EXE nosh lim +--- +name: sh-options +description: + Check that "set +o" DTRT per POSIX +stdin: + t() { + [[ -o vi ]]; a=$? + [[ -o pipefail ]]; b=$? + echo $((++i)) $a $b . + } + set -e + set -o vi + set +o pipefail + set +e + t + x=$(set +o) + set +o vi + set -o pipefail + t + eval "$x" + t +expected-stdout: + 1 0 1 . + 2 1 0 . + 3 0 1 . --- name: pipeline-1 description: |