diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/dollar-at-star | 5 | ||||
-rw-r--r-- | tests/dollar-at-star8.sub | 14 | ||||
-rw-r--r-- | tests/dollar.right | 5 | ||||
-rw-r--r-- | tests/exp.right | 100 | ||||
-rw-r--r-- | tests/exp.tests | 1 | ||||
-rw-r--r-- | tests/exp9.sub | 69 |
6 files changed, 194 insertions, 0 deletions
diff --git a/tests/dollar-at-star b/tests/dollar-at-star index 6b34abf2..2d2a1b66 100755 --- a/tests/dollar-at-star +++ b/tests/dollar-at-star @@ -220,6 +220,11 @@ ${THIS_SH} ./dollar-at-star5.sub ${THIS_SH} ./dollar-at-star6.sub ${THIS_SH} ./dollar-at-star7.sub +# tests for expansions of $@ and ${a[@]} (vs. $* and ${a[*]}) on the RHS of +# assignment statements with non-default IFS: $@ expands to args or array +# members separated by spaces +${THIS_SH} ./dollar-at-star8.sub + # tests for special expansion of "$*" and "${array[*]}" when used with other # expansions -- bugs through bash-2.05b ${THIS_SH} ./dollar-star1.sub diff --git a/tests/dollar-at-star8.sub b/tests/dollar-at-star8.sub new file mode 100644 index 00000000..7e1b6884 --- /dev/null +++ b/tests/dollar-at-star8.sub @@ -0,0 +1,14 @@ +function f { + typeset -a a + a=("$@") + typeset IFS=, + typeset a1="${a[@]} ${a[*]} $@ $* ${@} ${*}" + typeset a2=${a[@]}\ ${a[*]}\ $@\ $*\ ${@}\ ${*} a3 a4 + a3="${a[@]} ${a[*]} $@ $* ${@} ${*}" + a4=${a[@]}\ ${a[*]}\ $@\ $*\ ${@}\ ${*} + unset -v IFS + printf '%s\n' "a1=$a1" "a2=$a2" "a3=$a3" "a4=$a4" +} + +echo +f a b c diff --git a/tests/dollar.right b/tests/dollar.right index 8d21b6d7..1e48c24e 100644 --- a/tests/dollar.right +++ b/tests/dollar.right @@ -294,6 +294,11 @@ argv[3] = <'c'> |is| |a| |test| + +a1=a b c a,b,c a b c a,b,c a b c a,b,c +a2=a b c a,b,c a b c a,b,c a b c a,b,c +a3=a b c a,b,c a b c a,b,c a b c a,b,c +a4=a b c a,b,c a b c a,b,c a b c a,b,c xa|xb|xc xa|xb|xc a|b|c diff --git a/tests/exp.right b/tests/exp.right index 5e6d6cbb..11b49ffa 100644 --- a/tests/exp.right +++ b/tests/exp.right @@ -234,3 +234,103 @@ declare -a array=([0]=$'x\001y\177z') argv[1] = <x^Ay^?z> declare -a array=([0]=$'x\001y\177z') declare -A array=([$'x\001y\177z']=$'a\242b\002c' ) +abc +def +ghi +jkl +abc def ghi jkl +xxabc +def +ghi +jklyy +xxabc def ghi jklyy +abc +def +ghi +jkl +abc +def ghi +jkl +abc +def ghi +jkl +abc +def ghi +jkl +xxabc +def +ghi +jklyy +xxabc +def ghi +jklyy +abc +def +ghi +jklabc +def +ghi +jkl +abc +def ghi +jklabc +def ghi +jkl +abc:def ghi:jkl +abc:def ghi:jkl +abc:def ghi:jkl +abc +def ghi +jkl +abc:def ghi:jkl +abc:def ghi:jkl +abc +def ghi +jkl +var=abc:def ghi:jkl +abc:def ghi:jkl +var=abc:def ghi:jkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +var=abcdef ghijkl +abcdef ghijkl +var=abcdef ghijkl +abc +def ghi +jkl +abc def ghi jkl +abc def ghi jkl +abc def ghi jkl +abc +def +ghi +jkl +abc def ghi jkl +abc def ghi jkl +abc +def +ghi +jkl +var=abc def ghi jkl +abc def ghi jkl +var=abc def ghi jkl +abc +def ghi +jkl +[foo] +[] +[foo] +[] +[foo] +[foo] +[foo] +[] +[foo] +[] +[foo] +[] diff --git a/tests/exp.tests b/tests/exp.tests index e6e2bc55..b446d637 100644 --- a/tests/exp.tests +++ b/tests/exp.tests @@ -404,3 +404,4 @@ ${THIS_SH} ./exp5.sub ${THIS_SH} ./exp6.sub ${THIS_SH} ./exp7.sub ${THIS_SH} ./exp8.sub +${THIS_SH} ./exp9.sub diff --git a/tests/exp9.sub b/tests/exp9.sub new file mode 100644 index 00000000..a0399c7a --- /dev/null +++ b/tests/exp9.sub @@ -0,0 +1,69 @@ +# expansion test cases from Posix interp 888 + +set "abc" "def ghi" "jkl" +unset novar +IFS=' ' # a space +printf '%s\n' $* +printf '%s\n' "$*" +printf '%s\n' xx$*yy +printf '%s\n' "xx$*yy" +printf '%s\n' $@ +printf '%s\n' "$@" +printf '%s\n' ${1+"$@"} +printf '%s\n' ${novar-"$@"} +printf '%s\n' xx$@yy +printf '%s\n' "xx$@yy" +printf '%s\n' $@$@ +printf '%s\n' "$@$@" +IFS=':' +printf '%s\n' "$*" +var=$*; printf '%s\n' "$var" +var="$*"; printf '%s\n' "$var" +unset var +printf '%s\n' ${var-$*} +printf '%s\n' "${var-$*}" +printf '%s\n' ${var-"$*"} +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" +unset var +printf '%s\n' "${var=$*}" +printf 'var=%s\n' "$var" + +IFS='' # null +printf '%s\n' "$*" +var=$*; printf '%s\n' "$var" +var="$*"; printf '%s\n' "$var" +unset var +printf '%s\n' ${var-$*} +printf '%s\n' "${var-$*}" +printf '%s\n' ${var-"$*"} +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" +unset var +printf '%s\n' "${var=$*}" +printf 'var=%s\n' "$var" +printf '%s\n' "$@" + +unset IFS +printf '%s\n' "$*" +var=$*; printf '%s\n' "$var" +var="$*"; printf '%s\n' "$var" +unset var +printf '%s\n' ${var-$*} +printf '%s\n' "${var-$*}" +printf '%s\n' ${var-"$*"} +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" +unset var +printf '%s\n' "${var=$*}" +printf 'var=%s\n' "$var" +printf '%s\n' "$@" + +set -- +printf '[%s]\n' foo "$*" +printf '[%s]\n' foo "$novar$*$(echo)" +printf '[%s]\n' foo $@ +printf '[%s]\n' foo "$@" +printf '[%s]\n' foo ''$@ +printf '[%s]\n' foo ''"$@" +printf '[%s]\n' foo ''"$novar$@$(echo)" |