1*a5cb58abSJilles Tjoelker 2*a5cb58abSJilles Tjoelkerfailures='' 3*a5cb58abSJilles Tjoelkerok='' 4*a5cb58abSJilles Tjoelker 5*a5cb58abSJilles Tjoelkertestcase() { 6*a5cb58abSJilles Tjoelker code="$1" 7*a5cb58abSJilles Tjoelker expected="$2" 8*a5cb58abSJilles Tjoelker oIFS="$IFS" 9*a5cb58abSJilles Tjoelker eval "$code" 10*a5cb58abSJilles Tjoelker IFS='|' 11*a5cb58abSJilles Tjoelker result="$#|$*" 12*a5cb58abSJilles Tjoelker IFS="$oIFS" 13*a5cb58abSJilles Tjoelker if [ "x$result" = "x$expected" ]; then 14*a5cb58abSJilles Tjoelker ok=x$ok 15*a5cb58abSJilles Tjoelker else 16*a5cb58abSJilles Tjoelker failures=x$failures 17*a5cb58abSJilles Tjoelker echo "For $code, expected $expected actual $result" 18*a5cb58abSJilles Tjoelker fi 19*a5cb58abSJilles Tjoelker} 20*a5cb58abSJilles Tjoelker 21*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- ""$*' '1|' 22*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- $*""' '1|' 23*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- ""$@' '1|' 24*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- $@""' '1|' 25*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- """$*"' '1|' 26*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- "$*"""' '1|' 27*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- """$@"' '1|' 28*a5cb58abSJilles Tjoelkertestcase 'shift $#; set -- "$@"""' '1|' 29*a5cb58abSJilles Tjoelker 30*a5cb58abSJilles Tjoelkertest "x$failures" = x 31