diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-10-11 14:49:26 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-10-11 15:19:40 -0700 |
commit | 011c1d1c0766c65517ebd495465c99e86edb63ec (patch) | |
tree | 30d8f6a13235af90897c3223554871ef52225462 /tests/exp-tests | |
parent | 40cfaccf7b178b6239b5cd0013ef80b7ff8e503e (diff) | |
download | vyatta-bash-011c1d1c0766c65517ebd495465c99e86edb63ec.tar.gz vyatta-bash-011c1d1c0766c65517ebd495465c99e86edb63ec.zip |
Update to bash-4.1
Diffstat (limited to 'tests/exp-tests')
-rw-r--r-- | tests/exp-tests | 380 |
1 files changed, 0 insertions, 380 deletions
diff --git a/tests/exp-tests b/tests/exp-tests deleted file mode 100644 index 884b5a6..0000000 --- a/tests/exp-tests +++ /dev/null @@ -1,380 +0,0 @@ -# -# A suite of tests for bash word expansions -# -# This tests parameter and variable expansion, with an empahsis on -# proper quoting behavior. -# -# Chet Ramey - -# -# If you comment out the body of this function, you can do a diff against -# `expansion-tests.right' to see if the shell is behaving correctly -# -expect() -{ - echo expect "$@" -} - -# Test the substitution quoting characters (CTLESC and CTLNUL) in different -# combinations - -expect "<^A>" -recho `echo ''` -expect "<^A>" -recho `echo ""` -expect "<^B>" -recho `echo ''` -expect "<^B>" -recho `echo ""` -expect "<^A>" -recho `echo ` -expect "<^B>" -recho `echo ` - -# Test null strings without variable expansion -expect "<abcdefgh>" -recho abcd""efgh -expect "<abcdefgh>" -recho abcd''efgh -expect "<abcdefgh>" -recho ""abcdefgh -expect "<abcdefgh>" -recho ''abcdefgh -expect "<abcd>" -recho abcd"" -expect "<abcd>" -recho abcd'' - -# Test the quirky behavior of $@ in "" -expect nothing -recho "$@" -expect "< >" -recho " $@" -expect "<-->" -recho "-${@}-" - -# Test null strings with variable expansion that fails -expect '<>' -recho $xxx"" -expect '<>' -recho ""$xxx -expect '<>' -recho $xxx'' -expect '<>' -recho ''$xxx -expect '<>' -recho $xxx""$yyy -expect '<>' -recho $xxx''$yyy - -# Test null strings with variable expansion that succeeds -xxx=abc -yyy=def - -expect '<abc>' -recho $xxx"" -expect '<abc>' -recho ""$xxx -expect '<abc>' -recho $xxx'' -expect '<abc>' -recho ''$xxx -expect '<abcdef>' -recho $xxx""$yyy -expect '<abcdef>' -recho $xxx''$yyy - -unset xxx yyy - -# Test the unquoted special quoting characters -expect "<^A>" -recho -expect "<^B>" -recho -expect "<^A>" -recho "" -expect "<^B>" -recho "" -expect "<^A>" -recho '' -expect "<^B>" -recho '' - -# Test expansion of a variable that is unset -expect nothing -recho $xxx -expect '<>' -recho "$xxx" - -expect nothing -recho "$xxx${@}" - -# Test empty string expansion -expect '<>' -recho "" -expect '<>' -recho '' - -# Test command substitution with (disabled) history substitution -expect '<Hello World!>' -# set +H -recho "`echo \"Hello world!\"`" - -# Test some shell special characters -expect '<`>' -recho "\`" -expect '<">' -recho "\"" -expect '<\^A>' -recho "\" - -expect '<\$>' -recho "\\$" - -expect '<\\>' -recho "\\\\" - -# This should give argv[1] = a argv[2] = b -expect '<a> <b>' -FOO=`echo 'a b' | tr ' ' '\012'` -recho $FOO - -# This should give argv[1] = ^A argv[2] = ^B -expect '<^A> <^B>' -FOO=`echo ' ' | tr ' ' '\012'` -recho $FOO - -# Test quoted and unquoted globbing characters -expect '<**>' -recho "*"* - -expect '<\.\./*/>' -recho "\.\./*/" - -# Test patterns that come up when the shell quotes funny character -# combinations -expect '<^A^B^A^B>' -recho '' -expect '<^A^A>' -recho '' -expect '<^A^B>' -recho '' -expect '<^A^A^B>' -recho '' - -# More tests of "$@" -set abc def ghi jkl -expect '< abc> <def> <ghi> <jkl >' -recho " $@ " -expect '< abc> <def> <ghi> <jkl >' -recho "${1+ $@ }" - -set abc def ghi jkl -expect '<--abc> <def> <ghi> <jkl-->' -recho "--$@--" - -set "a b" cd ef gh -expect '<a b> <cd> <ef> <gh>' -recho ${1+"$@"} -expect '<a b> <cd> <ef> <gh>' -recho ${foo:-"$@"} -expect '<a b> <cd> <ef> <gh>' -recho "${@}" - -expect '< >' -recho " " -expect '< - >' -recho " - " - -# Test combinations of different types of quoting in a fully-quoted string -# (so the WHOLLY_QUOTED tests fail and it doesn't get set) -expect '</^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/>' -recho "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" - -# Test the various Posix parameter expansions - -expect '<foo bar>' -recho "${x:-$(echo "foo bar")}" -expect '<foo> <bar>' -recho ${x:-$(echo "foo bar")} - -unset X -expect '<abc>' -recho ${X:=abc} -expect '<abc>' -recho $X - -set a b c -expect '<posix>' -recho ${3:+posix} - -POSIX=/usr/posix -expect '<10>' -recho ${#POSIX} - -# remove shortest trailing match -x=file.c -expect '<file.o>' -recho ${x%.c}.o - -# remove longest trailing match -x=posix/src/std -expect '<posix>' -recho ${x%%/*} - -# remove shortest leading pattern -x=$HOME/src/cmd -expect '</src/cmd>' -recho ${x#$HOME} - -# remove longest leading pattern -x=/one/two/three -expect '<three>' -recho ${x##*/} - -# pattern removal of patterns that don't match -z=abcdef - -expect '<abcdef>' -recho ${z#xyz} -expect '<abcdef>' -recho ${z##xyz} - -expect '<abcdef>' -recho ${z%xyz} -expect '<abcdef>' -recho ${z%%xyz} - -# Command substitution and the quirky differences between `` and $() - -expect '<\$x>' -recho '\$x' - -expect '<$x>' -recho `echo '\$x'` - -expect '<\$x>' -recho $(echo '\$x') - -# The difference between $* "$*" and "$@" - -set "abc" "def ghi" "jkl" - -expect '<abc> <def> <ghi> <jkl>' -recho $* - -expect '<abc def ghi jkl>' -recho "$*" - -OIFS="$IFS" -IFS=":$IFS" - -# The special behavior of "$*", using the first character of $IFS as separator -expect '<abc:def ghi:jkl>' -recho "$*" - -IFS="$OIFS" - -expect '<abc> <def ghi> <jkl>' -recho "$@" - -expect '<xxabc> <def ghi> <jklyy>' -recho "xx$@yy" - -expect '<abc> <def ghi> <jklabc> <def ghi> <jkl>' -recho "$@$@" - -foo=abc -bar=def - -expect '<abcdef>' -recho "$foo""$bar" - -unset foo -set $foo bar '' xyz "$foo" abc - -expect '<bar> <> <xyz> <> <abc>' -recho "$@" - -# More tests of quoting and deferred evaluation - -foo=10 x=foo -y='$'$x -expect '<$foo>' -recho $y -eval y='$'$x -expect '<10>' -recho $y - -# case statements - -NL=' -' -x='ab -cd' - -expect '<newline expected>' -case "$x" in -*$NL*) recho "newline expected" ;; -esac - -expect '<got it>' -case \? in -*"?"*) recho "got it" ;; -esac - -expect '<got it>' -case \? in -*\?*) recho "got it" ;; -esac - -set one two three four five -expect '<one> <three> <five>' -recho $1 $3 ${5} $8 ${9} - -# length tests on positional parameters and some special parameters - -expect '<5> <5>' -recho $# ${#} -expect '<3>' -recho ${#1} -expect '<1>' -recho ${##} -expect '<1>' -recho ${#?} -expect '<5>' -recho ${#@} -expect '<5>' -recho ${#*} -expect '<5>' -recho "${#@}" -expect '<5>' -recho "${#*}" - -expect '<42>' -recho $((28 + 14)) -expect '<26>' -recho $[ 13 * 2 ] - -expect '<\>' -recho `echo \\\\` - -expect '<~>' -recho '~' - -expect nothing -recho $! -expect nothing -recho ${!} - -# test word splitting of assignment statements not preceding a command -a="a b c d e" -declare b=$a -expect '<a> <b> <c> <d> <e>' -recho $b - -a="a?b?c" - -echo ${a//\\?/ } - -echo ${a//\?/ } |