diff --git a/tools/regression/bin/sh/Makefile b/tools/regression/bin/sh/Makefile new file mode 100644 index 000000000000..2c9ca5943505 --- /dev/null +++ b/tools/regression/bin/sh/Makefile @@ -0,0 +1,4 @@ +# $FreeBSD$ + +all: + sh regress.sh diff --git a/tools/regression/bin/sh/builtins/alias.0 b/tools/regression/bin/sh/builtins/alias.0 new file mode 100644 index 000000000000..39c748adca6d --- /dev/null +++ b/tools/regression/bin/sh/builtins/alias.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ +set -e + +unalias -a +alias foo=bar +alias diff --git a/tools/regression/bin/sh/builtins/alias.0.stdout b/tools/regression/bin/sh/builtins/alias.0.stdout new file mode 100644 index 000000000000..1d5d2961d0e1 --- /dev/null +++ b/tools/regression/bin/sh/builtins/alias.0.stdout @@ -0,0 +1 @@ +foo='bar' diff --git a/tools/regression/bin/sh/builtins/alias.1 b/tools/regression/bin/sh/builtins/alias.1 new file mode 100644 index 000000000000..31403dc760bf --- /dev/null +++ b/tools/regression/bin/sh/builtins/alias.1 @@ -0,0 +1,3 @@ +# $FreeBSD$ +unalias -a +alias foo diff --git a/tools/regression/bin/sh/builtins/alias.1.stderr b/tools/regression/bin/sh/builtins/alias.1.stderr new file mode 100644 index 000000000000..5ea01d55bfd1 --- /dev/null +++ b/tools/regression/bin/sh/builtins/alias.1.stderr @@ -0,0 +1 @@ +alias: foo not found diff --git a/tools/regression/bin/sh/builtins/unalias.0 b/tools/regression/bin/sh/builtins/unalias.0 new file mode 100644 index 000000000000..34d8d6e07d2e --- /dev/null +++ b/tools/regression/bin/sh/builtins/unalias.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ +set -e + +alias false=true +false +unalias false +false && exit 1 +unalias false && exit 1 + +alias a1=foo a2=bar +unalias a1 a2 +unalias a1 && exit 1 +unalias a2 && exit 1 +alias a2=bar +unalias a1 a2 && exit 1 + +alias a1=foo a2=bar +unalias -a +unalias a1 && exit 1 +unalias a2 && exit 1 +exit 0 diff --git a/tools/regression/bin/sh/regress.sh b/tools/regression/bin/sh/regress.sh new file mode 100644 index 000000000000..0e098d0d3d12 --- /dev/null +++ b/tools/regression/bin/sh/regress.sh @@ -0,0 +1,42 @@ +# $FreeBSD$ + +echo '1..31' + +COUNTER=1 + +do_test() { + local c + c=${COUNTER} + COUNTER=$((COUNTER+1)) + sh $1 > tmp.stdout 2> tmp.stderr + if [ $? -ne $2 ]; then + echo "not ok ${c} - ${1} # wrong exit status" + rm tmp.stdout tmp.stderr + return + fi + for i in stdout stderr; do + if [ -f ${1}.${i} ]; then + if ! cmp -s tmp.${i} ${1}.${i}; then + echo "not ok ${c} - ${1} # wrong output on ${i}" + rm tmp.stdout tmp.stderr + return + fi + elif [ -s tmp.${i} ]; then + echo "not ok ${c} - ${1} # wrong output on ${i}" + rm tmp.stdout tmp.stderr + return + fi + done + echo "ok ${c} - ${1}" + rm tmp.stdout tmp.stderr +} + +SUCCESS=$(find . -name "*.0") +for i in ${SUCCESS} ; do + do_test ${i} 0 +done + +FAILURE=$(find . -name "*.1") +for i in ${FAILURE} ; do + do_test ${i} 1 +done diff --git a/tools/regression/bin/sh/regress.t b/tools/regression/bin/sh/regress.t new file mode 100644 index 000000000000..c36d8342d32a --- /dev/null +++ b/tools/regression/bin/sh/regress.t @@ -0,0 +1,6 @@ +#!/bin/sh +# $FreeBSD$ + +cd `dirname $0` + +sh regress.sh diff --git a/tools/regression/bin/sh/set-e/and1.0 b/tools/regression/bin/sh/set-e/and1.0 new file mode 100644 index 000000000000..607b7c350020 --- /dev/null +++ b/tools/regression/bin/sh/set-e/and1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +true && true diff --git a/tools/regression/bin/sh/set-e/and2.1 b/tools/regression/bin/sh/set-e/and2.1 new file mode 100644 index 000000000000..78e203ab0059 --- /dev/null +++ b/tools/regression/bin/sh/set-e/and2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +true && false +exit 0 diff --git a/tools/regression/bin/sh/set-e/and3.0 b/tools/regression/bin/sh/set-e/and3.0 new file mode 100644 index 000000000000..9fafb1c45dd8 --- /dev/null +++ b/tools/regression/bin/sh/set-e/and3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false && true +exit 0 diff --git a/tools/regression/bin/sh/set-e/and4.0 b/tools/regression/bin/sh/set-e/and4.0 new file mode 100644 index 000000000000..25d0e6147dea --- /dev/null +++ b/tools/regression/bin/sh/set-e/and4.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false && false +exit 0 diff --git a/tools/regression/bin/sh/set-e/background1.0 b/tools/regression/bin/sh/set-e/background1.0 new file mode 100644 index 000000000000..21577f4f78c7 --- /dev/null +++ b/tools/regression/bin/sh/set-e/background1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +false & diff --git a/tools/regression/bin/sh/set-e/cmd1.0 b/tools/regression/bin/sh/set-e/cmd1.0 new file mode 100644 index 000000000000..67fdcbc3d83e --- /dev/null +++ b/tools/regression/bin/sh/set-e/cmd1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +true diff --git a/tools/regression/bin/sh/set-e/cmd2.1 b/tools/regression/bin/sh/set-e/cmd2.1 new file mode 100644 index 000000000000..7cd8b09d64a8 --- /dev/null +++ b/tools/regression/bin/sh/set-e/cmd2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false +exit 0 diff --git a/tools/regression/bin/sh/set-e/elif1.0 b/tools/regression/bin/sh/set-e/elif1.0 new file mode 100644 index 000000000000..80c7af6424aa --- /dev/null +++ b/tools/regression/bin/sh/set-e/elif1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +if false; then +elif false; then +fi diff --git a/tools/regression/bin/sh/set-e/elif2.0 b/tools/regression/bin/sh/set-e/elif2.0 new file mode 100644 index 000000000000..028938b81833 --- /dev/null +++ b/tools/regression/bin/sh/set-e/elif2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +if false; then +elif false; false; then +fi diff --git a/tools/regression/bin/sh/set-e/if1.0 b/tools/regression/bin/sh/set-e/if1.0 new file mode 100644 index 000000000000..0be254bb28b7 --- /dev/null +++ b/tools/regression/bin/sh/set-e/if1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +if false; then +fi diff --git a/tools/regression/bin/sh/set-e/if2.0 b/tools/regression/bin/sh/set-e/if2.0 new file mode 100644 index 000000000000..495540854099 --- /dev/null +++ b/tools/regression/bin/sh/set-e/if2.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +set -e +# PR 28852 +if true; then + false && true +fi +exit 0 diff --git a/tools/regression/bin/sh/set-e/if3.0 b/tools/regression/bin/sh/set-e/if3.0 new file mode 100644 index 000000000000..fdeacc071d55 --- /dev/null +++ b/tools/regression/bin/sh/set-e/if3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +if false; false then +fi diff --git a/tools/regression/bin/sh/set-e/not1.0 b/tools/regression/bin/sh/set-e/not1.0 new file mode 100644 index 000000000000..21c089a23221 --- /dev/null +++ b/tools/regression/bin/sh/set-e/not1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +! true +exit 0 diff --git a/tools/regression/bin/sh/set-e/not2.0 b/tools/regression/bin/sh/set-e/not2.0 new file mode 100644 index 000000000000..59b9c1cfed01 --- /dev/null +++ b/tools/regression/bin/sh/set-e/not2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +! false diff --git a/tools/regression/bin/sh/set-e/or1.0 b/tools/regression/bin/sh/set-e/or1.0 new file mode 100644 index 000000000000..c2dcbe9b682a --- /dev/null +++ b/tools/regression/bin/sh/set-e/or1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +true || false diff --git a/tools/regression/bin/sh/set-e/or2.0 b/tools/regression/bin/sh/set-e/or2.0 new file mode 100644 index 000000000000..934e2a68de9e --- /dev/null +++ b/tools/regression/bin/sh/set-e/or2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +false || true diff --git a/tools/regression/bin/sh/set-e/or3.1 b/tools/regression/bin/sh/set-e/or3.1 new file mode 100644 index 000000000000..7a617a14b4a4 --- /dev/null +++ b/tools/regression/bin/sh/set-e/or3.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false || false +exit 0 diff --git a/tools/regression/bin/sh/set-e/pipe1.1 b/tools/regression/bin/sh/set-e/pipe1.1 new file mode 100644 index 000000000000..c0bad0fa732d --- /dev/null +++ b/tools/regression/bin/sh/set-e/pipe1.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +true | false +exit 0 diff --git a/tools/regression/bin/sh/set-e/pipe2.0 b/tools/regression/bin/sh/set-e/pipe2.0 new file mode 100644 index 000000000000..1e25566a156b --- /dev/null +++ b/tools/regression/bin/sh/set-e/pipe2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +false | true diff --git a/tools/regression/bin/sh/set-e/return1.0 b/tools/regression/bin/sh/set-e/return1.0 new file mode 100644 index 000000000000..ff20a070eb46 --- /dev/null +++ b/tools/regression/bin/sh/set-e/return1.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ +set -e + +# PR 85267 +f() { + false || return 1 + return 0 +} + +f || true +exit 0 diff --git a/tools/regression/bin/sh/set-e/semi1.1 b/tools/regression/bin/sh/set-e/semi1.1 new file mode 100644 index 000000000000..90476a98f1ec --- /dev/null +++ b/tools/regression/bin/sh/set-e/semi1.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false; true +exit 0 diff --git a/tools/regression/bin/sh/set-e/semi2.1 b/tools/regression/bin/sh/set-e/semi2.1 new file mode 100644 index 000000000000..8f510ac9c164 --- /dev/null +++ b/tools/regression/bin/sh/set-e/semi2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +true; false +exit 0 diff --git a/tools/regression/bin/sh/set-e/subshell1.0 b/tools/regression/bin/sh/set-e/subshell1.0 new file mode 100644 index 000000000000..8e5831bd1907 --- /dev/null +++ b/tools/regression/bin/sh/set-e/subshell1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +(true) diff --git a/tools/regression/bin/sh/set-e/subshell2.1 b/tools/regression/bin/sh/set-e/subshell2.1 new file mode 100644 index 000000000000..619e98a7d2df --- /dev/null +++ b/tools/regression/bin/sh/set-e/subshell2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +(false) +exit 0 diff --git a/tools/regression/bin/sh/set-e/until1.0 b/tools/regression/bin/sh/set-e/until1.0 new file mode 100644 index 000000000000..71ea7f2cf704 --- /dev/null +++ b/tools/regression/bin/sh/set-e/until1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +until false; do + break +done diff --git a/tools/regression/bin/sh/set-e/until2.0 b/tools/regression/bin/sh/set-e/until2.0 new file mode 100644 index 000000000000..24ea2760400b --- /dev/null +++ b/tools/regression/bin/sh/set-e/until2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +until false; false; do + break +done diff --git a/tools/regression/bin/sh/set-e/while1.0 b/tools/regression/bin/sh/set-e/while1.0 new file mode 100644 index 000000000000..e4c893895726 --- /dev/null +++ b/tools/regression/bin/sh/set-e/while1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +while false; do +done diff --git a/tools/regression/bin/sh/set-e/while2.0 b/tools/regression/bin/sh/set-e/while2.0 new file mode 100644 index 000000000000..a331237ab3ef --- /dev/null +++ b/tools/regression/bin/sh/set-e/while2.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +while false; false; do +done