trim2.0 revision 206147
1164426Ssam# $FreeBSD: head/tools/regression/bin/sh/expansion/trim2.0 206147 2010-04-03 21:07:50Z jilles $ 2164426Ssam 3164426Ssame= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' 4164426Ssamh='##' 5164426Ssamfailures='' 6164426Ssamok='' 7164426Ssam 8164426Ssamtestcase() { 9164426Ssam code="$1" 10164426Ssam expected="$2" 11164426Ssam oIFS="$IFS" 12164426Ssam eval "$code" 13164426Ssam IFS='|' 14164426Ssam result="$#|$*" 15164426Ssam IFS="$oIFS" 16164426Ssam if [ "x$result" = "x$expected" ]; then 17164426Ssam ok=x$ok 18164426Ssam else 19164426Ssam failures=x$failures 20164426Ssam echo "For $code, expected $expected actual $result" 21164426Ssam fi 22164426Ssam} 23164426Ssam 24164426Ssamset -f 25164426Ssamtestcase 'set -- $s' '1|ast*que?non' 26164426Ssamtestcase 'set -- ${s%\?*}' '1|ast*que' 27164426Ssamtestcase 'set -- "${s%\?*}"' '1|ast*que' 28164426Ssamtestcase 'set -- ${s%\**}' '1|ast' 29164426Ssamtestcase 'set -- "${s%\**}"' '1|ast' 30164426Ssamtestcase 'set -- ${s%"$q"*}' '1|ast*que' 31164426Ssamtestcase 'set -- "${s%"$q"*}"' '1|ast*que' 32164426Ssamtestcase 'set -- ${s%"$a"*}' '1|ast' 33164426Ssamtestcase 'set -- "${s%"$a"*}"' '1|ast' 34164426Ssamtestcase 'set -- ${s%"$q"$a}' '1|ast*que' 35164426Ssamtestcase 'set -- "${s%"$q"$a}"' '1|ast*que' 36164426Ssamtestcase 'set -- ${s%"$a"$a}' '1|ast' 37164426Ssamtestcase 'set -- "${s%"$a"$a}"' '1|ast' 38164426Ssamset +f 39164426Ssam 40164426Ssamtestcase 'set -- "${b%\}}"' '1|{{(#)}' 41164426Ssam# Parentheses are special in ksh, check that they can be escaped 42164426Ssamtestcase 'set -- "${b%\)*}"' '1|{{(#' 43164426Ssamtestcase 'set -- "${h#\#}"' '1|#' 44164426Ssam 45164426Ssamtestcase 'set -- ${p%"${p#?}"}' '1|/' 46164426Ssamtestcase 'set -- ${p%"${p#??????}"}' '1|/etc' 47164426Ssamtestcase 'set -- ${p%"${p#???????}"}' '1|/etc/' 48164426Ssamtestcase 'set -- "${p%"${p#?}"}"' '1|/' 49164426Ssamtestcase 'set -- "${p%"${p#??????}"}"' '1|/et[c]' 50164426Ssamtestcase 'set -- "${p%"${p#???????}"}"' '1|/et[c]/' 51164426Ssamtestcase 'set -- ${p#"${p}"}' '0|' 52164426Ssamtestcase 'set -- "${p#"${p}"}"' '1|' 53164426Ssamtestcase 'set -- "${p#*\[}"' '1|c]/' 54164426Ssam 55164426Ssamtest "x$failures" = x 56164426Ssam