summary refs log tree commit diff
path: root/bin/1sh/tests/builtins/fc2.0
diff options
context:
space:
mode:
Diffstat (limited to 'bin/1sh/tests/builtins/fc2.0')
-rw-r--r--bin/1sh/tests/builtins/fc2.034
1 files changed, 34 insertions, 0 deletions
diff --git a/bin/1sh/tests/builtins/fc2.0 b/bin/1sh/tests/builtins/fc2.0
new file mode 100644
index 00000000..ac267566
--- /dev/null
+++ b/bin/1sh/tests/builtins/fc2.0
@@ -0,0 +1,34 @@
+# $FreeBSD: releng/12.1/bin/sh/tests/builtins/fc2.0 213738 2010-10-12 18:20:38Z obrien $
+set -e
+trap 'echo Broken pipe -- test failed' PIPE
+
+P=${TMPDIR:-/tmp}
+cd $P
+T=$(mktemp -d sh-test.XXXXXX)
+cd $T
+
+mkfifo input output error
+HISTFILE=/dev/null ${SH} +m -i <input >output 2>error &
+exec 3>input
+{
+	# Command not found, containing slash
+	echo '/var/empty/nonexistent' >&3
+	# Read error message, shell will read new input now
+	read dummy <&5
+	# Execute bad command again
+	echo 'fc -e true; echo continued' >&3
+	read dummy <&5
+	read line <&4 && [ "$line" = continued ] && : ${rc:=0}
+	exec 3>&-
+	# Old sh duplicates itself after the fc, producing another line
+	# of output.
+	if read line <&4; then
+		echo "Extraneous output: $line"
+		rc=1
+	fi
+} 4<output 5<error
+exec 3>&-
+
+rm input output error
+rmdir ${P}/${T}
+exit ${rc:-3}