diff options
Diffstat (limited to 'bin/sh/tests/execution')
49 files changed, 436 insertions, 0 deletions
diff --git a/bin/sh/tests/execution/Makefile b/bin/sh/tests/execution/Makefile new file mode 100644 index 0000000..638492b --- /dev/null +++ b/bin/sh/tests/execution/Makefile @@ -0,0 +1,56 @@ +# $FreeBSD$ + +TESTSDIR= ${TESTSBASE}/bin/sh/${.CURDIR:T} + +.PATH: ${.CURDIR:H} +ATF_TESTS_SH= functional_test + +FILESDIR= ${TESTSDIR} + +FILES= bg1.0 +FILES+= bg2.0 +FILES+= bg3.0 +FILES+= bg4.0 +FILES+= bg5.0 +FILES+= bg6.0 bg6.0.stdout +FILES+= bg7.0 +FILES+= bg8.0 +FILES+= bg9.0 +FILES+= bg10.0 bg10.0.stdout +FILES+= fork1.0 +FILES+= fork2.0 +FILES+= fork3.0 +FILES+= func1.0 +FILES+= func2.0 +FILES+= func3.0 +FILES+= hash1.0 +FILES+= int-cmd1.0 +FILES+= killed1.0 +FILES+= killed2.0 +FILES+= not1.0 +FILES+= not2.0 +FILES+= path1.0 +FILES+= redir1.0 +FILES+= redir2.0 +FILES+= redir3.0 +FILES+= redir4.0 +FILES+= redir5.0 +FILES+= redir6.0 +FILES+= redir7.0 +FILES+= set-n1.0 +FILES+= set-n2.0 +FILES+= set-n3.0 +FILES+= set-n4.0 +FILES+= set-x1.0 +FILES+= set-x2.0 +FILES+= set-x3.0 +FILES+= set-x4.0 +FILES+= shellproc1.0 +FILES+= subshell1.0 subshell1.0.stdout +FILES+= subshell2.0 +FILES+= subshell3.0 +FILES+= subshell4.0 +FILES+= unknown1.0 +FILES+= var-assign1.0 + +.include <bsd.test.mk> diff --git a/bin/sh/tests/execution/bg1.0 b/bin/sh/tests/execution/bg1.0 new file mode 100644 index 0000000..edb92ae --- /dev/null +++ b/bin/sh/tests/execution/bg1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +: `false` & diff --git a/bin/sh/tests/execution/bg10.0 b/bin/sh/tests/execution/bg10.0 new file mode 100644 index 0000000..44a25dc --- /dev/null +++ b/bin/sh/tests/execution/bg10.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +# The redirection overrides the </dev/null implicit in a background command. + +echo yes | ${SH} -c '{ cat & wait; } <&0' diff --git a/bin/sh/tests/execution/bg10.0.stdout b/bin/sh/tests/execution/bg10.0.stdout new file mode 100644 index 0000000..7cfab5b --- /dev/null +++ b/bin/sh/tests/execution/bg10.0.stdout @@ -0,0 +1 @@ +yes diff --git a/bin/sh/tests/execution/bg2.0 b/bin/sh/tests/execution/bg2.0 new file mode 100644 index 0000000..2e2fbc5 --- /dev/null +++ b/bin/sh/tests/execution/bg2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +f() { return 42; } +f +: | : & diff --git a/bin/sh/tests/execution/bg3.0 b/bin/sh/tests/execution/bg3.0 new file mode 100644 index 0000000..359fc6f --- /dev/null +++ b/bin/sh/tests/execution/bg3.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +f() { return 42; } +f +(:) & diff --git a/bin/sh/tests/execution/bg4.0 b/bin/sh/tests/execution/bg4.0 new file mode 100644 index 0000000..25e4f4e --- /dev/null +++ b/bin/sh/tests/execution/bg4.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +x='' +: ${x:=1} & +wait +exit ${x:-0} diff --git a/bin/sh/tests/execution/bg5.0 b/bin/sh/tests/execution/bg5.0 new file mode 100644 index 0000000..cc9ceaa --- /dev/null +++ b/bin/sh/tests/execution/bg5.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +# A background command has an implicit </dev/null redirection. + +echo bad | ${SH} -c '{ cat & wait; }' diff --git a/bin/sh/tests/execution/bg6.0 b/bin/sh/tests/execution/bg6.0 new file mode 100644 index 0000000..b0faf9e --- /dev/null +++ b/bin/sh/tests/execution/bg6.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +# The redirection overrides the </dev/null implicit in a background command. + +echo yes | ${SH} -c '{ cat & wait; } </dev/stdin' diff --git a/bin/sh/tests/execution/bg6.0.stdout b/bin/sh/tests/execution/bg6.0.stdout new file mode 100644 index 0000000..7cfab5b --- /dev/null +++ b/bin/sh/tests/execution/bg6.0.stdout @@ -0,0 +1 @@ +yes diff --git a/bin/sh/tests/execution/bg7.0 b/bin/sh/tests/execution/bg7.0 new file mode 100644 index 0000000..f771edc --- /dev/null +++ b/bin/sh/tests/execution/bg7.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +# The redirection does not apply to the background command, and therefore +# does not override the implicit </dev/null. + +echo bad | ${SH} -c '</dev/null; { cat & wait; }' diff --git a/bin/sh/tests/execution/bg8.0 b/bin/sh/tests/execution/bg8.0 new file mode 100644 index 0000000..33667cb --- /dev/null +++ b/bin/sh/tests/execution/bg8.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +# The redirection does not apply to the background command, and therefore +# does not override the implicit </dev/null. + +echo bad | ${SH} -c 'command eval \) </dev/null 2>/dev/null; { cat & wait; }' diff --git a/bin/sh/tests/execution/bg9.0 b/bin/sh/tests/execution/bg9.0 new file mode 100644 index 0000000..64fde3e --- /dev/null +++ b/bin/sh/tests/execution/bg9.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +# The redirection does not apply to the background command, and therefore +# does not override the implicit </dev/null. + +echo bad | ${SH} -c 'command eval eval \\\) \</dev/null 2>/dev/null; { cat & wait; }' diff --git a/bin/sh/tests/execution/fork1.0 b/bin/sh/tests/execution/fork1.0 new file mode 100644 index 0000000..2eeac79 --- /dev/null +++ b/bin/sh/tests/execution/fork1.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +shname=${SH%% *} +shname=${shname##*/} + +result=$(${SH} -c 'ps -p $$ -o comm=') +test "$result" = "ps" || exit 1 + +result=$(${SH} -c 'ps -p $$ -o comm=; :') +test "$result" = "$shname" || exit 1 diff --git a/bin/sh/tests/execution/fork2.0 b/bin/sh/tests/execution/fork2.0 new file mode 100644 index 0000000..62a2537 --- /dev/null +++ b/bin/sh/tests/execution/fork2.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +result=$(${SH} -c '(/bin/sleep 1)& sleep 0.1; ps -p $! -o comm=; kill $!') +test "$result" = sleep || exit 1 + +result=$(${SH} -c '{ trap "echo trapped" EXIT; (/usr/bin/true); } & wait') +test "$result" = trapped || exit 1 + +exit 0 diff --git a/bin/sh/tests/execution/fork3.0 b/bin/sh/tests/execution/fork3.0 new file mode 100644 index 0000000..3cb678c --- /dev/null +++ b/bin/sh/tests/execution/fork3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +result=$(${SH} -c 'f() { ps -p $$ -o comm=; }; f') +test "$result" = "ps" diff --git a/bin/sh/tests/execution/func1.0 b/bin/sh/tests/execution/func1.0 new file mode 100644 index 0000000..29fcc07 --- /dev/null +++ b/bin/sh/tests/execution/func1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +MALLOC_OPTIONS=J ${SH} -c 'g() { g() { :; }; :; }; g' && +MALLOC_OPTIONS=J ${SH} -c 'g() { unset -f g; :; }; g' diff --git a/bin/sh/tests/execution/func2.0 b/bin/sh/tests/execution/func2.0 new file mode 100644 index 0000000..9830b5e --- /dev/null +++ b/bin/sh/tests/execution/func2.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ +# The empty pairs of braces here are to test that this does not cause a crash. + +f() { } +f +hash -v f >/dev/null +f() { { }; } +f +hash -v f >/dev/null +f() { { } } +f +hash -v f >/dev/null diff --git a/bin/sh/tests/execution/func3.0 b/bin/sh/tests/execution/func3.0 new file mode 100644 index 0000000..e0ed581 --- /dev/null +++ b/bin/sh/tests/execution/func3.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +# This may fail when parsing or when defining the function, or the definition +# may silently do nothing. In no event may the function be executed. + +${SH} -c 'unset() { echo overriding function executed, bad; }; v=1; unset v; exit "${v-0}"' 2>/dev/null +: diff --git a/bin/sh/tests/execution/hash1.0 b/bin/sh/tests/execution/hash1.0 new file mode 100644 index 0000000..a645c2a --- /dev/null +++ b/bin/sh/tests/execution/hash1.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit +trap 'rm -rf "${T}"' 0 +PATH=$T:$PATH +ls -ld . >/dev/null +cat <<EOF >"$T/ls" +: +EOF +chmod 755 "$T/ls" +PATH=$PATH +ls -ld . diff --git a/bin/sh/tests/execution/int-cmd1.0 b/bin/sh/tests/execution/int-cmd1.0 new file mode 100644 index 0000000..a1f097b --- /dev/null +++ b/bin/sh/tests/execution/int-cmd1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! echo echo bad | $SH -ic 'fi' 2>/dev/null diff --git a/bin/sh/tests/execution/killed1.0 b/bin/sh/tests/execution/killed1.0 new file mode 100644 index 0000000..41d3e05 --- /dev/null +++ b/bin/sh/tests/execution/killed1.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ +# Sometimes the "Killed" message is not flushed soon enough and it +# is redirected along with the output of a builtin. +# Do not change the semicolon to a newline as it would hide the bug. + +exec 3>&1 +exec >/dev/null 2>&1 +${SH} -c 'kill -9 $$'; : >&3 2>&3 diff --git a/bin/sh/tests/execution/killed2.0 b/bin/sh/tests/execution/killed2.0 new file mode 100644 index 0000000..7ff3fe2 --- /dev/null +++ b/bin/sh/tests/execution/killed2.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ +# Most shells print a message when a foreground job is killed by a signal. +# POSIX allows this, provided the message is sent to stderr, not stdout. +# Some trickery is needed to capture the message as redirecting stderr of +# the command itself does not affect it. The colon command ensures that +# the subshell forks for ${SH}. + +exec 3>&1 +r=`(${SH} -c 'kill $$'; :) 2>&1 >&3` +[ -n "$r" ] diff --git a/bin/sh/tests/execution/not1.0 b/bin/sh/tests/execution/not1.0 new file mode 100644 index 0000000..12c6265 --- /dev/null +++ b/bin/sh/tests/execution/not1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +f() { ! return $1; } +f 0 && ! f 1 diff --git a/bin/sh/tests/execution/not2.0 b/bin/sh/tests/execution/not2.0 new file mode 100644 index 0000000..1b128d0 --- /dev/null +++ b/bin/sh/tests/execution/not2.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +while :; do + ! break + exit 3 +done diff --git a/bin/sh/tests/execution/path1.0 b/bin/sh/tests/execution/path1.0 new file mode 100644 index 0000000..50829d6 --- /dev/null +++ b/bin/sh/tests/execution/path1.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ +# Some builtins should not be overridable via PATH. + +set -e +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf ${T}' 0 +echo '#!/bin/sh +echo bad' >"$T/cd" +chmod 755 "$T/cd" +cd /bin +oPATH=$PATH +PATH=$T:$PATH:%builtin +cd / +PATH=$oPATH +[ "$(pwd)" = / ] diff --git a/bin/sh/tests/execution/redir1.0 b/bin/sh/tests/execution/redir1.0 new file mode 100644 index 0000000..dd0011f --- /dev/null +++ b/bin/sh/tests/execution/redir1.0 @@ -0,0 +1,27 @@ +# $FreeBSD$ +trap ': $((brokenpipe+=1))' PIPE + +P=${TMPDIR:-/tmp} +cd $P +T=$(mktemp -d sh-test.XXXXXX) +cd $T + +brokenpipe=0 +mkfifo fifo1 fifo2 +read dummy >fifo2 <fifo1 & +{ + exec 4>fifo2 +} 3<fifo2 # Formerly, sh would keep fd 3 and a duplicate of it open. +echo dummy >fifo1 +if [ $brokenpipe -ne 0 ]; then + rc=3 +fi +wait +echo dummy >&4 2>/dev/null +if [ $brokenpipe -eq 1 ]; then + : ${rc:=0} +fi + +rm fifo1 fifo2 +rmdir ${P}/${T} +exit ${rc:-3} diff --git a/bin/sh/tests/execution/redir2.0 b/bin/sh/tests/execution/redir2.0 new file mode 100644 index 0000000..1588105 --- /dev/null +++ b/bin/sh/tests/execution/redir2.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ +trap ': $((brokenpipe+=1))' PIPE + +P=${TMPDIR:-/tmp} +cd $P +T=$(mktemp -d sh-test.XXXXXX) +cd $T + +brokenpipe=0 +mkfifo fifo1 fifo2 +{ + { + exec ${SH} -c 'exec <fifo1; read dummy' + } 7<&- # fifo2 should be kept open, but not passed to programs + true +} 7<fifo2 & + +exec 4>fifo2 +exec 3>fifo1 +echo dummy >&4 2>/dev/null +if [ $brokenpipe -eq 1 ]; then + : ${rc:=0} +fi +echo dummy >&3 +wait + +rm fifo1 fifo2 +rmdir ${P}/${T} +exit ${rc:-3} diff --git a/bin/sh/tests/execution/redir3.0 b/bin/sh/tests/execution/redir3.0 new file mode 100644 index 0000000..d68e450 --- /dev/null +++ b/bin/sh/tests/execution/redir3.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +3>&- 3>&- diff --git a/bin/sh/tests/execution/redir4.0 b/bin/sh/tests/execution/redir4.0 new file mode 100644 index 0000000..57054c1 --- /dev/null +++ b/bin/sh/tests/execution/redir4.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +{ echo bad 0>&3; } 2>/dev/null 3>/dev/null 3>&- +exit 0 diff --git a/bin/sh/tests/execution/redir5.0 b/bin/sh/tests/execution/redir5.0 new file mode 100644 index 0000000..707ca68 --- /dev/null +++ b/bin/sh/tests/execution/redir5.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +{ (echo bad) >/dev/null; } </dev/null diff --git a/bin/sh/tests/execution/redir6.0 b/bin/sh/tests/execution/redir6.0 new file mode 100644 index 0000000..4e3ac0c --- /dev/null +++ b/bin/sh/tests/execution/redir6.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ "$2" != "$3" ]; then + echo "Failure at $1" >&2 + failures=$((failures + 1)) + fi +} + +check $LINENO "$(trap "echo bye" EXIT; : >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; { :; } >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; (:) >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; (: >/dev/null))" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; : >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; { :; } >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; (:) >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; (: >/dev/null)')" bye + +exit $((failures > 0)) diff --git a/bin/sh/tests/execution/redir7.0 b/bin/sh/tests/execution/redir7.0 new file mode 100644 index 0000000..2487bcf --- /dev/null +++ b/bin/sh/tests/execution/redir7.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ "$2" != "$3" ]; then + echo "Failure at $1" >&2 + failures=$((failures + 1)) + fi +} + +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; f >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; { f; } >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; (f) >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; (f >/dev/null))" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; f >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; { f; } >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; (f) >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; (f >/dev/null)')" bye + +exit $((failures > 0)) diff --git a/bin/sh/tests/execution/set-n1.0 b/bin/sh/tests/execution/set-n1.0 new file mode 100644 index 0000000..14c9b93 --- /dev/null +++ b/bin/sh/tests/execution/set-n1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +v=$( ($SH -n <<'EOF' +for +EOF +) 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/execution/set-n2.0 b/bin/sh/tests/execution/set-n2.0 new file mode 100644 index 0000000..c7f3162 --- /dev/null +++ b/bin/sh/tests/execution/set-n2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +$SH -n <<'EOF' +echo bad +EOF diff --git a/bin/sh/tests/execution/set-n3.0 b/bin/sh/tests/execution/set-n3.0 new file mode 100644 index 0000000..24a9159 --- /dev/null +++ b/bin/sh/tests/execution/set-n3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +v=$( ($SH -nc 'for') 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/execution/set-n4.0 b/bin/sh/tests/execution/set-n4.0 new file mode 100644 index 0000000..3698508 --- /dev/null +++ b/bin/sh/tests/execution/set-n4.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +$SH -nc 'echo bad' diff --git a/bin/sh/tests/execution/set-x1.0 b/bin/sh/tests/execution/set-x1.0 new file mode 100644 index 0000000..7fe1dbf --- /dev/null +++ b/bin/sh/tests/execution/set-x1.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +key='must_contain_this' +{ r=`set -x; { : "$key"; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac diff --git a/bin/sh/tests/execution/set-x2.0 b/bin/sh/tests/execution/set-x2.0 new file mode 100644 index 0000000..56d54e3 --- /dev/null +++ b/bin/sh/tests/execution/set-x2.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +key='must contain this' +PS4="$key+ " +{ r=`set -x; { :; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac diff --git a/bin/sh/tests/execution/set-x3.0 b/bin/sh/tests/execution/set-x3.0 new file mode 100644 index 0000000..1ca57ac --- /dev/null +++ b/bin/sh/tests/execution/set-x3.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +key='must contain this' +PS4='$key+ ' +{ r=`set -x; { :; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac diff --git a/bin/sh/tests/execution/set-x4.0 b/bin/sh/tests/execution/set-x4.0 new file mode 100644 index 0000000..0904766 --- /dev/null +++ b/bin/sh/tests/execution/set-x4.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +key=`printf '\r\t\001\200\300'` +r=`{ set -x; : "$key"; } 2>&1 >/dev/null` +case $r in +*[![:print:]]*) echo fail; exit 3 +esac diff --git a/bin/sh/tests/execution/shellproc1.0 b/bin/sh/tests/execution/shellproc1.0 new file mode 100644 index 0000000..1326bc2 --- /dev/null +++ b/bin/sh/tests/execution/shellproc1.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit +trap 'rm -rf "${T}"' 0 +cat <<EOF >"$T/testshellproc" +printf 'this ' +echo is a test +EOF +chmod 755 "$T/testshellproc" +PATH=$T:$PATH +[ "`testshellproc`" = "this is a test" ] diff --git a/bin/sh/tests/execution/subshell1.0 b/bin/sh/tests/execution/subshell1.0 new file mode 100644 index 0000000..347806e --- /dev/null +++ b/bin/sh/tests/execution/subshell1.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +(eval "cd / +v=$(printf %0100000d 1) +echo \${#v}") +echo end diff --git a/bin/sh/tests/execution/subshell1.0.stdout b/bin/sh/tests/execution/subshell1.0.stdout new file mode 100644 index 0000000..8c71af3 --- /dev/null +++ b/bin/sh/tests/execution/subshell1.0.stdout @@ -0,0 +1,2 @@ +100000 +end diff --git a/bin/sh/tests/execution/subshell2.0 b/bin/sh/tests/execution/subshell2.0 new file mode 100644 index 0000000..3216449 --- /dev/null +++ b/bin/sh/tests/execution/subshell2.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +f() { + x=2 +} +( + x=1 + f + [ "$x" = 2 ] +) diff --git a/bin/sh/tests/execution/subshell3.0 b/bin/sh/tests/execution/subshell3.0 new file mode 100644 index 0000000..9a87acb --- /dev/null +++ b/bin/sh/tests/execution/subshell3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +(false; exit) && exit 3 +exit 0 diff --git a/bin/sh/tests/execution/subshell4.0 b/bin/sh/tests/execution/subshell4.0 new file mode 100644 index 0000000..b39edb1 --- /dev/null +++ b/bin/sh/tests/execution/subshell4.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +(eval "set v=1"; false) && echo bad; : diff --git a/bin/sh/tests/execution/unknown1.0 b/bin/sh/tests/execution/unknown1.0 new file mode 100644 index 0000000..45f541e --- /dev/null +++ b/bin/sh/tests/execution/unknown1.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ + +nosuchtool 2>/dev/null +[ $? -ne 127 ] && exit 1 +/var/empty/nosuchtool 2>/dev/null +[ $? -ne 127 ] && exit 1 +(nosuchtool) 2>/dev/null +[ $? -ne 127 ] && exit 1 +(/var/empty/nosuchtool) 2>/dev/null +[ $? -ne 127 ] && exit 1 +/ 2>/dev/null +[ $? -ne 126 ] && exit 1 +PATH=/usr bin 2>/dev/null +[ $? -ne 126 ] && exit 1 + +dummy=$(nosuchtool 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$(/var/empty/nosuchtool 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$( (nosuchtool) 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$( (/var/empty/nosuchtool) 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$(/ 2>/dev/null) +[ $? -ne 126 ] && exit 1 +dummy=$(PATH=/usr bin 2>/dev/null) +[ $? -ne 126 ] && exit 1 + +exit 0 diff --git a/bin/sh/tests/execution/var-assign1.0 b/bin/sh/tests/execution/var-assign1.0 new file mode 100644 index 0000000..26e5424 --- /dev/null +++ b/bin/sh/tests/execution/var-assign1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +[ "$(HOME=/etc HOME=/ cd && pwd)" = / ] |