summaryrefslogtreecommitdiffstats
path: root/shell_cmds/sh/tests/errors
diff options
context:
space:
mode:
Diffstat (limited to 'shell_cmds/sh/tests/errors')
-rw-r--r--shell_cmds/sh/tests/errors/Makefile35
-rw-r--r--shell_cmds/sh/tests/errors/Makefile.depend11
-rw-r--r--shell_cmds/sh/tests/errors/assignment-error1.030
-rw-r--r--shell_cmds/sh/tests/errors/assignment-error2.08
-rw-r--r--shell_cmds/sh/tests/errors/backquote-error1.04
-rw-r--r--shell_cmds/sh/tests/errors/backquote-error2.07
-rw-r--r--shell_cmds/sh/tests/errors/bad-binary1.12612
-rw-r--r--shell_cmds/sh/tests/errors/bad-keyword1.04
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp1.07
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp2.22
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp2.2.stderr1
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp3.22
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp3.2.stderr1
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp4.22
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp4.2.stderr1
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp5.22
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp5.2.stderr1
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp6.22
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp6.2.stderr1
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp7.04
-rw-r--r--shell_cmds/sh/tests/errors/bad-parm-exp8.04
-rw-r--r--shell_cmds/sh/tests/errors/option-error.046
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error.053
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error2.24
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error3.054
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error4.07
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error5.05
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error6.012
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error7.07
-rw-r--r--shell_cmds/sh/tests/errors/redirection-error8.05
-rw-r--r--shell_cmds/sh/tests/errors/write-error1.03
31 files changed, 337 insertions, 0 deletions
diff --git a/shell_cmds/sh/tests/errors/Makefile b/shell_cmds/sh/tests/errors/Makefile
new file mode 100644
index 0000000..a234a05
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/Makefile
@@ -0,0 +1,35 @@
+# $FreeBSD: head/bin/sh/tests/errors/Makefile 319575 2017-06-04 20:52:55Z jilles $
+
+PACKAGE= tests
+
+TESTSDIR= ${TESTSBASE}/bin/sh/${.CURDIR:T}
+
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH= functional_test
+
+${PACKAGE}FILES+= assignment-error1.0
+${PACKAGE}FILES+= assignment-error2.0
+${PACKAGE}FILES+= backquote-error1.0
+${PACKAGE}FILES+= backquote-error2.0
+${PACKAGE}FILES+= bad-binary1.126
+${PACKAGE}FILES+= bad-keyword1.0
+${PACKAGE}FILES+= bad-parm-exp1.0
+${PACKAGE}FILES+= bad-parm-exp2.2 bad-parm-exp2.2.stderr
+${PACKAGE}FILES+= bad-parm-exp3.2 bad-parm-exp3.2.stderr
+${PACKAGE}FILES+= bad-parm-exp4.2 bad-parm-exp4.2.stderr
+${PACKAGE}FILES+= bad-parm-exp5.2 bad-parm-exp5.2.stderr
+${PACKAGE}FILES+= bad-parm-exp6.2 bad-parm-exp6.2.stderr
+${PACKAGE}FILES+= bad-parm-exp7.0
+${PACKAGE}FILES+= bad-parm-exp8.0
+${PACKAGE}FILES+= option-error.0
+${PACKAGE}FILES+= redirection-error.0
+${PACKAGE}FILES+= redirection-error2.2
+${PACKAGE}FILES+= redirection-error3.0
+${PACKAGE}FILES+= redirection-error4.0
+${PACKAGE}FILES+= redirection-error5.0
+${PACKAGE}FILES+= redirection-error6.0
+${PACKAGE}FILES+= redirection-error7.0
+${PACKAGE}FILES+= redirection-error8.0
+${PACKAGE}FILES+= write-error1.0
+
+.include <bsd.test.mk>
diff --git a/shell_cmds/sh/tests/errors/Makefile.depend b/shell_cmds/sh/tests/errors/Makefile.depend
new file mode 100644
index 0000000..dbfdc34
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD: head/bin/sh/tests/errors/Makefile.depend 296587 2016-03-09 22:46:01Z bdrewery $
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/shell_cmds/sh/tests/errors/assignment-error1.0 b/shell_cmds/sh/tests/errors/assignment-error1.0
new file mode 100644
index 0000000..2106b5a
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/assignment-error1.0
@@ -0,0 +1,30 @@
+# $FreeBSD: head/bin/sh/tests/errors/assignment-error1.0 213738 2010-10-12 18:20:38Z obrien $
+IFS=,
+
+SPECIAL="break,\
+ :,\
+ continue,\
+ . /dev/null,\
+ eval,\
+ exec,\
+ export -p,\
+ readonly -p,\
+ set,\
+ shift,\
+ times,\
+ trap,\
+ unset foo"
+
+# If there is no command word, the shell must abort on an assignment error.
+${SH} -c "readonly a=0; a=2; exit 0" 2>/dev/null && exit 1
+
+# Special built-in utilities must abort on an assignment error.
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+ ${SH} -c "readonly a=0; a=2 ${cmd}; exit 0" 2>/dev/null && exit 1
+done
+
+# Other utilities must not abort; we currently still execute them.
+${SH} -c 'readonly a=0; a=1 true; exit $a' 2>/dev/null || exit 1
+${SH} -c 'readonly a=0; a=1 command :; exit $a' 2>/dev/null || exit 1
diff --git a/shell_cmds/sh/tests/errors/assignment-error2.0 b/shell_cmds/sh/tests/errors/assignment-error2.0
new file mode 100644
index 0000000..68f2d48
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/assignment-error2.0
@@ -0,0 +1,8 @@
+# $FreeBSD: head/bin/sh/tests/errors/assignment-error2.0 216870 2011-01-01 13:26:18Z jilles $
+
+set -e
+HOME=/
+readonly HOME
+cd /sbin
+{ HOME=/bin cd; } 2>/dev/null || :
+[ "$(pwd)" != /bin ]
diff --git a/shell_cmds/sh/tests/errors/backquote-error1.0 b/shell_cmds/sh/tests/errors/backquote-error1.0
new file mode 100644
index 0000000..d35d0b7
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/backquote-error1.0
@@ -0,0 +1,4 @@
+# $FreeBSD: head/bin/sh/tests/errors/backquote-error1.0 213738 2010-10-12 18:20:38Z obrien $
+
+echo 'echo `for` echo ".BAD"CODE.' | ${SH} +m -i 2>&1 | grep -q BADCODE && exit 1
+exit 0
diff --git a/shell_cmds/sh/tests/errors/backquote-error2.0 b/shell_cmds/sh/tests/errors/backquote-error2.0
new file mode 100644
index 0000000..a5955dd
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/backquote-error2.0
@@ -0,0 +1,7 @@
+# $FreeBSD: head/bin/sh/tests/errors/backquote-error2.0 213738 2010-10-12 18:20:38Z obrien $
+
+${SH} -c 'echo `echo .BA"DCODE.`
+echo ".BAD"CODE.' 2>&1 | grep -q BADCODE && exit 1
+echo '`"`' | ${SH} -n 2>/dev/null && exit 1
+echo '`'"'"'`' | ${SH} -n 2>/dev/null && exit 1
+exit 0
diff --git a/shell_cmds/sh/tests/errors/bad-binary1.126 b/shell_cmds/sh/tests/errors/bad-binary1.126
new file mode 100644
index 0000000..7c7c67f
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-binary1.126
@@ -0,0 +1,12 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-binary1.126 218320 2011-02-05 12:54:59Z jilles $
+# Checking for binary "scripts" without magic number is permitted but not
+# required by POSIX. However, it is preferable to getting errors like
+# Syntax error: word unexpected (expecting ")")
+# from trying to execute ELF binaries for the wrong architecture.
+
+T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit
+trap 'rm -rf "${T}"' 0
+printf '\0echo bad\n' >"$T/testshellproc"
+chmod 755 "$T/testshellproc"
+PATH=$T:$PATH
+testshellproc 2>/dev/null
diff --git a/shell_cmds/sh/tests/errors/bad-keyword1.0 b/shell_cmds/sh/tests/errors/bad-keyword1.0
new file mode 100644
index 0000000..d2680d6
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-keyword1.0
@@ -0,0 +1,4 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-keyword1.0 216398 2010-12-12 21:18:16Z jilles $
+
+echo ':; fi' | ${SH} -n 2>/dev/null && exit 1
+exit 0
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp1.0 b/shell_cmds/sh/tests/errors/bad-parm-exp1.0
new file mode 100644
index 0000000..f288294
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp1.0
@@ -0,0 +1,7 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp1.0 164004 2006-11-05 18:41:23Z stefanf $
+false && {
+ ${}
+ ${foo/}
+ ${foo@bar}
+}
+:
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp2.2 b/shell_cmds/sh/tests/errors/bad-parm-exp2.2
new file mode 100644
index 0000000..7424840
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp2.2
@@ -0,0 +1,2 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp2.2 270101 2014-08-17 14:26:12Z jilles $
+eval '${}'
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp2.2.stderr b/shell_cmds/sh/tests/errors/bad-parm-exp2.2.stderr
new file mode 100644
index 0000000..51ea69c
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp2.2.stderr
@@ -0,0 +1 @@
+eval: ${}: Bad substitution
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp3.2 b/shell_cmds/sh/tests/errors/bad-parm-exp3.2
new file mode 100644
index 0000000..56a52df
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp3.2
@@ -0,0 +1,2 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp3.2 270101 2014-08-17 14:26:12Z jilles $
+eval '${foo/}'
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp3.2.stderr b/shell_cmds/sh/tests/errors/bad-parm-exp3.2.stderr
new file mode 100644
index 0000000..70473f9
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp3.2.stderr
@@ -0,0 +1 @@
+eval: ${foo/}: Bad substitution
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp4.2 b/shell_cmds/sh/tests/errors/bad-parm-exp4.2
new file mode 100644
index 0000000..e0a7099
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp4.2
@@ -0,0 +1,2 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp4.2 270101 2014-08-17 14:26:12Z jilles $
+eval '${foo:@abc}'
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp4.2.stderr b/shell_cmds/sh/tests/errors/bad-parm-exp4.2.stderr
new file mode 100644
index 0000000..3363f51
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp4.2.stderr
@@ -0,0 +1 @@
+eval: ${foo:@...}: Bad substitution
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp5.2 b/shell_cmds/sh/tests/errors/bad-parm-exp5.2
new file mode 100644
index 0000000..fa26259
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp5.2
@@ -0,0 +1,2 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp5.2 270101 2014-08-17 14:26:12Z jilles $
+eval '${/}'
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp5.2.stderr b/shell_cmds/sh/tests/errors/bad-parm-exp5.2.stderr
new file mode 100644
index 0000000..13763f8
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp5.2.stderr
@@ -0,0 +1 @@
+eval: ${/}: Bad substitution
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp6.2 b/shell_cmds/sh/tests/errors/bad-parm-exp6.2
new file mode 100644
index 0000000..51858e8
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp6.2
@@ -0,0 +1,2 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp6.2 270101 2014-08-17 14:26:12Z jilles $
+eval '${#foo^}'
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp6.2.stderr b/shell_cmds/sh/tests/errors/bad-parm-exp6.2.stderr
new file mode 100644
index 0000000..cc56f65
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp6.2.stderr
@@ -0,0 +1 @@
+eval: ${foo...}: Bad substitution
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp7.0 b/shell_cmds/sh/tests/errors/bad-parm-exp7.0
new file mode 100644
index 0000000..d7bff92
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp7.0
@@ -0,0 +1,4 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp7.0 287081 2015-08-23 20:44:53Z jilles $
+
+v=1
+eval ": $(printf '${v-${\372}}')"
diff --git a/shell_cmds/sh/tests/errors/bad-parm-exp8.0 b/shell_cmds/sh/tests/errors/bad-parm-exp8.0
new file mode 100644
index 0000000..24f6bff
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/bad-parm-exp8.0
@@ -0,0 +1,4 @@
+# $FreeBSD: head/bin/sh/tests/errors/bad-parm-exp8.0 287081 2015-08-23 20:44:53Z jilles $
+
+v=1
+eval ": $(printf '${v-${w\372}}')"
diff --git a/shell_cmds/sh/tests/errors/option-error.0 b/shell_cmds/sh/tests/errors/option-error.0
new file mode 100644
index 0000000..473c0b9
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/option-error.0
@@ -0,0 +1,46 @@
+# $FreeBSD: head/bin/sh/tests/errors/option-error.0 213738 2010-10-12 18:20:38Z obrien $
+IFS=,
+
+SPECIAL="break abc,\
+ continue abc,\
+ .,
+ exit abc,
+ export -x,
+ readonly -x,
+ return abc,
+ set -z,
+ shift abc,
+ trap -y,
+ unset -y"
+
+UTILS="alias -y,\
+ cat -z,\
+ cd abc def,\
+ command break abc,\
+ expr 1 +,\
+ fc -z,\
+ getopts,\
+ hash -z,\
+ jobs -z,\
+ printf,\
+ pwd abc,\
+ read,\
+ test abc =,\
+ ulimit -z,\
+ umask -z,\
+ unalias -z,\
+ wait abc"
+
+# Special built-in utilities must abort on an option or operand error.
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+ ${SH} -c "${cmd}; exit 0" 2>/dev/null && exit 1
+done
+
+# Other utilities must not abort.
+set -- ${UTILS}
+for cmd in "$@"
+do
+ ${SH} -c "${cmd}; exit 0" 2>/dev/null || exit 1
+done
diff --git a/shell_cmds/sh/tests/errors/redirection-error.0 b/shell_cmds/sh/tests/errors/redirection-error.0
new file mode 100644
index 0000000..2a67698
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error.0
@@ -0,0 +1,53 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error.0 213738 2010-10-12 18:20:38Z obrien $
+IFS=,
+
+SPECIAL="break,\
+ :,\
+ continue,\
+ . /dev/null,
+ eval,
+ exec,
+ export -p,
+ readonly -p,
+ set,
+ shift,
+ times,
+ trap,
+ unset foo"
+
+UTILS="alias,\
+ bg,\
+ bind,\
+ cd,\
+ command echo,\
+ echo,\
+ false,\
+ fc -l,\
+ fg,\
+ getopts a -a,\
+ hash,\
+ jobs,\
+ printf a,\
+ pwd,\
+ read var < /dev/null,\
+ test,\
+ true,\
+ type ls,\
+ ulimit,\
+ umask,\
+ unalias -a,\
+ wait"
+
+# Special built-in utilities must abort on a redirection error.
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+ ${SH} -c "${cmd} > /; exit 0" 2>/dev/null && exit 1
+done
+
+# Other utilities must not abort.
+set -- ${UTILS}
+for cmd in "$@"
+do
+ ${SH} -c "${cmd} > /; exit 0" 2>/dev/null || exit 1
+done
diff --git a/shell_cmds/sh/tests/errors/redirection-error2.2 b/shell_cmds/sh/tests/errors/redirection-error2.2
new file mode 100644
index 0000000..595e959
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error2.2
@@ -0,0 +1,4 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error2.2 213738 2010-10-12 18:20:38Z obrien $
+
+# sh should fail gracefully on this bad redirect
+${SH} -c 'echo 1 >&$a' 2>/dev/null
diff --git a/shell_cmds/sh/tests/errors/redirection-error3.0 b/shell_cmds/sh/tests/errors/redirection-error3.0
new file mode 100644
index 0000000..fd7a334
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error3.0
@@ -0,0 +1,54 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error3.0 213738 2010-10-12 18:20:38Z obrien $
+IFS=,
+
+SPECIAL="break,\
+ :,\
+ continue,\
+ . /dev/null,\
+ eval,\
+ exec,\
+ export -p,\
+ readonly -p,\
+ set,\
+ shift,\
+ times,\
+ trap,\
+ unset foo"
+
+UTILS="alias,\
+ bg,\
+ bind,\
+ cd,\
+ command echo,\
+ echo,\
+ false,\
+ fc -l,\
+ fg,\
+ getopts a -a,\
+ hash,\
+ jobs,\
+ printf a,\
+ pwd,\
+ read var < /dev/null,\
+ test,\
+ true,\
+ type ls,\
+ ulimit,\
+ umask,\
+ unalias -a,\
+ wait"
+
+# When used with 'command', neither special built-in utilities nor other
+# utilities must abort on a redirection error.
+
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+ ${SH} -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1
+done
+
+set -- ${UTILS}
+for cmd in "$@"
+do
+ ${SH} -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1
+done
diff --git a/shell_cmds/sh/tests/errors/redirection-error4.0 b/shell_cmds/sh/tests/errors/redirection-error4.0
new file mode 100644
index 0000000..ed58499
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error4.0
@@ -0,0 +1,7 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error4.0 205138 2010-03-13 22:53:17Z jilles $
+# A redirection error should not abort the shell if there is no command word.
+exec 2>/dev/null
+</var/empty/x
+</var/empty/x y=2
+y=2 </var/empty/x
+exit 0
diff --git a/shell_cmds/sh/tests/errors/redirection-error5.0 b/shell_cmds/sh/tests/errors/redirection-error5.0
new file mode 100644
index 0000000..b96c14e
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error5.0
@@ -0,0 +1,5 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error5.0 205153 2010-03-14 13:51:12Z jilles $
+# A redirection error on a subshell should not abort the shell.
+exec 2>/dev/null
+( echo bad ) </var/empty/x
+exit 0
diff --git a/shell_cmds/sh/tests/errors/redirection-error6.0 b/shell_cmds/sh/tests/errors/redirection-error6.0
new file mode 100644
index 0000000..1d84e6c
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error6.0
@@ -0,0 +1,12 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error6.0 205154 2010-03-14 14:24:35Z jilles $
+# A redirection error on a compound command should not abort the shell.
+exec 2>/dev/null
+{ echo bad; } </var/empty/x
+if :; then echo bad; fi </var/empty/x
+for i in 1; do echo bad; done </var/empty/x
+i=0
+while [ $i = 0 ]; do echo bad; i=1; done </var/empty/x
+i=0
+until [ $i != 0 ]; do echo bad; i=1; done </var/empty/x
+case i in *) echo bad ;; esac </var/empty/x
+exit 0
diff --git a/shell_cmds/sh/tests/errors/redirection-error7.0 b/shell_cmds/sh/tests/errors/redirection-error7.0
new file mode 100644
index 0000000..ef56434
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error7.0
@@ -0,0 +1,7 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error7.0 216851 2010-12-31 18:20:17Z jilles $
+
+! dummy=$(
+ exec 3>&1 >&2 2>&3
+ ulimit -n 9
+ exec 9<.
+) && [ -n "$dummy" ]
diff --git a/shell_cmds/sh/tests/errors/redirection-error8.0 b/shell_cmds/sh/tests/errors/redirection-error8.0
new file mode 100644
index 0000000..97364ac
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/redirection-error8.0
@@ -0,0 +1,5 @@
+# $FreeBSD: head/bin/sh/tests/errors/redirection-error8.0 319575 2017-06-04 20:52:55Z jilles $
+
+$SH -c '{ { :; } </var/empty/x; } 2>/dev/null || kill -INT $$; echo continued'
+r=$?
+[ "$r" -gt 128 ] && [ "$(kill -l "$r")" = INT ]
diff --git a/shell_cmds/sh/tests/errors/write-error1.0 b/shell_cmds/sh/tests/errors/write-error1.0
new file mode 100644
index 0000000..3001e5c
--- /dev/null
+++ b/shell_cmds/sh/tests/errors/write-error1.0
@@ -0,0 +1,3 @@
+# $FreeBSD: head/bin/sh/tests/errors/write-error1.0 244924 2013-01-01 12:48:24Z jilles $
+
+! echo >&- 2>/dev/null