svn commit: r212188 - in stable/8/tools/regression/bin/sh: builtins
expansion
Jilles Tjoelker
jilles at FreeBSD.org
Fri Sep 3 21:51:39 UTC 2010
Author: jilles
Date: Fri Sep 3 21:51:38 2010
New Revision: 212188
URL: http://svn.freebsd.org/changeset/base/212188
Log:
MFC r208476,208629,210738,211080,211341,211467: New tests
that also work with stable/8 sh.
Added:
stable/8/tools/regression/bin/sh/builtins/break2.0
- copied unchanged from r211467, head/tools/regression/bin/sh/builtins/break2.0
stable/8/tools/regression/bin/sh/builtins/break2.0.stdout
- copied unchanged from r211467, head/tools/regression/bin/sh/builtins/break2.0.stdout
stable/8/tools/regression/bin/sh/builtins/dot1.0
- copied unchanged from r208629, head/tools/regression/bin/sh/builtins/dot1.0
stable/8/tools/regression/bin/sh/builtins/eval4.0
- copied unchanged from r210738, head/tools/regression/bin/sh/builtins/eval4.0
stable/8/tools/regression/bin/sh/builtins/exec1.0
- copied unchanged from r208629, head/tools/regression/bin/sh/builtins/exec1.0
stable/8/tools/regression/bin/sh/builtins/return4.0
- copied unchanged from r208629, head/tools/regression/bin/sh/builtins/return4.0
stable/8/tools/regression/bin/sh/builtins/wait1.0
- copied unchanged from r208476, head/tools/regression/bin/sh/builtins/wait1.0
stable/8/tools/regression/bin/sh/builtins/wait2.0
- copied unchanged from r208476, head/tools/regression/bin/sh/builtins/wait2.0
stable/8/tools/regression/bin/sh/expansion/ifs2.0
- copied unchanged from r211341, head/tools/regression/bin/sh/expansion/ifs2.0
stable/8/tools/regression/bin/sh/expansion/plus-minus4.0
- copied unchanged from r211080, head/tools/regression/bin/sh/expansion/plus-minus4.0
Modified:
Directory Properties:
stable/8/tools/regression/bin/sh/ (props changed)
Copied: stable/8/tools/regression/bin/sh/builtins/break2.0 (from r211467, head/tools/regression/bin/sh/builtins/break2.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/break2.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r211467, head/tools/regression/bin/sh/builtins/break2.0)
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+# It is not immediately obvious that this should work, and someone probably
+# relies on it.
+
+while :; do
+ trap 'break' USR1
+ kill -USR1 $$
+ echo bad
+ exit 1
+done
+echo good
Copied: stable/8/tools/regression/bin/sh/builtins/break2.0.stdout (from r211467, head/tools/regression/bin/sh/builtins/break2.0.stdout)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/break2.0.stdout Fri Sep 3 21:51:38 2010 (r212188, copy of r211467, head/tools/regression/bin/sh/builtins/break2.0.stdout)
@@ -0,0 +1 @@
+good
Copied: stable/8/tools/regression/bin/sh/builtins/dot1.0 (from r208629, head/tools/regression/bin/sh/builtins/dot1.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/dot1.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r208629, head/tools/regression/bin/sh/builtins/dot1.0)
@@ -0,0 +1,21 @@
+# $FreeBSD$
+
+failures=
+failure() {
+ echo "Error at line $1" >&2
+ failures=x$failures
+}
+
+T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit
+trap 'rm -rf $T' 0
+cd $T || exit 3
+unset x
+echo 'x=2' >testscript
+. ./testscript
+[ "$x" = 2 ] || failure $LINENO
+cd / || exit 3
+x=1
+PATH=$T:$PATH . testscript
+[ "$x" = 2 ] || failure $LINENO
+
+test -z "$failures"
Copied: stable/8/tools/regression/bin/sh/builtins/eval4.0 (from r210738, head/tools/regression/bin/sh/builtins/eval4.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/eval4.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r210738, head/tools/regression/bin/sh/builtins/eval4.0)
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+# eval should preserve $? from command substitutions when starting
+# the parsed command.
+[ $(eval 'echo $?' $(false)) = 1 ]
Copied: stable/8/tools/regression/bin/sh/builtins/exec1.0 (from r208629, head/tools/regression/bin/sh/builtins/exec1.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/exec1.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r208629, head/tools/regression/bin/sh/builtins/exec1.0)
@@ -0,0 +1,25 @@
+# $FreeBSD$
+
+failures=
+failure() {
+ echo "Error at line $1" >&2
+ failures=x$failures
+}
+
+(
+ exec >/dev/null
+ echo bad
+)
+[ $? = 0 ] || failure $LINENO
+(
+ exec sh -c 'exit 42'
+ echo bad
+)
+[ $? = 42 ] || failure $LINENO
+(
+ exec /var/empty/nosuch
+ echo bad
+) 2>/dev/null
+[ $? = 127 ] || failure $LINENO
+
+test -z "$failures"
Copied: stable/8/tools/regression/bin/sh/builtins/return4.0 (from r208629, head/tools/regression/bin/sh/builtins/return4.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/return4.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r208629, head/tools/regression/bin/sh/builtins/return4.0)
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+failures=
+failure() {
+ echo "Error at line $1" >&2
+ failures=x$failures
+}
+
+T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit
+trap 'rm -rf $T' 0
+cd $T || exit 3
+echo 'return 42; exit 4' >testscript
+. ./testscript
+[ "$?" = 42 ] || failure $LINENO
+
+test -z "$failures"
Copied: stable/8/tools/regression/bin/sh/builtins/wait1.0 (from r208476, head/tools/regression/bin/sh/builtins/wait1.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/wait1.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r208476, head/tools/regression/bin/sh/builtins/wait1.0)
@@ -0,0 +1,23 @@
+# $FreeBSD$
+
+failures=
+failure() {
+ echo "Error at line $1" >&2
+ failures=x$failures
+}
+
+exit 4 & p4=$!
+exit 8 & p8=$!
+wait $p4
+[ $? = 4 ] || failure $LINENO
+wait $p8
+[ $? = 8 ] || failure $LINENO
+
+exit 3 & p3=$!
+exit 7 & p7=$!
+wait $p7
+[ $? = 7 ] || failure $LINENO
+wait $p3
+[ $? = 3 ] || failure $LINENO
+
+test -z "$failures"
Copied: stable/8/tools/regression/bin/sh/builtins/wait2.0 (from r208476, head/tools/regression/bin/sh/builtins/wait2.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/builtins/wait2.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r208476, head/tools/regression/bin/sh/builtins/wait2.0)
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+failures=
+failure() {
+ echo "Error at line $1" >&2
+ failures=x$failures
+}
+
+for i in 1 2 3 4 5 6 7 8 9 10; do
+ exit $i &
+done
+wait || failure $LINENO
+wait || failure $LINENO
+
+test -z "$failures"
Copied: stable/8/tools/regression/bin/sh/expansion/ifs2.0 (from r211341, head/tools/regression/bin/sh/expansion/ifs2.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/expansion/ifs2.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r211341, head/tools/regression/bin/sh/expansion/ifs2.0)
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+failures=0
+i=1
+set -f
+while [ "$i" -le 127 ]; do
+ # A different byte still in the range 1..127.
+ i2=$((i^2+(i==2)))
+ # Add a character to work around command substitution's removal of
+ # final newlines, then remove it again.
+ c=$(printf \\"$(printf %o@ "$i")")
+ c=${c%@}
+ c2=$(printf \\"$(printf %o@ "$i2")")
+ c2=${c2%@}
+ IFS=$c
+ set -- $c2$c$c2$c$c2
+ if [ "$#" -ne 3 ] || [ "$1" != "$c2" ] || [ "$2" != "$c2" ] ||
+ [ "$3" != "$c2" ]; then
+ echo "Bad results for separator $i (word $i2)" >&2
+ : $((failures += 1))
+ fi
+ i=$((i+1))
+done
+exit $((failures > 0))
Copied: stable/8/tools/regression/bin/sh/expansion/plus-minus4.0 (from r211080, head/tools/regression/bin/sh/expansion/plus-minus4.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/8/tools/regression/bin/sh/expansion/plus-minus4.0 Fri Sep 3 21:51:38 2010 (r212188, copy of r211080, head/tools/regression/bin/sh/expansion/plus-minus4.0)
@@ -0,0 +1,38 @@
+# $FreeBSD$
+
+# These may be a bit unclear in the POSIX spec or the proposed revisions,
+# and conflict with bash's interpretation, but I think ksh93's interpretation
+# makes most sense. In particular, it makes no sense to me that single-quotes
+# must match but are not removed.
+
+e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}'
+h='##'
+failures=''
+ok=''
+
+testcase() {
+ code="$1"
+ expected="$2"
+ oIFS="$IFS"
+ eval "$code"
+ IFS='|'
+ result="$#|$*"
+ IFS="$oIFS"
+ if [ "x$result" = "x$expected" ]; then
+ ok=x$ok
+ else
+ failures=x$failures
+ echo "For $code, expected $expected actual $result"
+ fi
+}
+
+testcase 'set -- ${e:-'"'"'}'"'"'}' '1|}'
+testcase "set -- \${e:-\\'}" "1|'"
+testcase "set -- \${e:-\\'\\'}" "1|''"
+testcase "set -- \"\${e:-'}\"" "1|'"
+testcase "set -- \"\${e:-'}'}\"" "1|''}"
+testcase "set -- \"\${e:-''}\"" "1|''"
+testcase 'set -- ${e:-\a}' '1|a'
+testcase 'set -- "${e:-\a}"' '1|\a'
+
+test "x$failures" = x
More information about the svn-src-stable
mailing list