Test yesno in combination with closein.
[gnulib.git] / tests / test-yesno.sh
diff --git a/tests/test-yesno.sh b/tests/test-yesno.sh
new file mode 100755 (executable)
index 0000000..fdf9948
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+tmpfiles=
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+p=t-yesno-
+tmpfiles="${p}in.tmp ${p}xout.tmp ${p}out.tmp"
+
+# For now, only test with C locale
+LC_ALL=C
+export LC_ALL
+
+# Test with seekable stdin; followon process must see remaining data
+cat <<EOF > ${p}in.tmp
+nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn - entire line consumed
+y\7fn - backspace does not change result
+y
+does not match either yesexpr or noexpr
+n
+EOF
+cat <<EOF > ${p}xout.tmp
+N
+Y
+Y
+N
+n
+EOF
+(./test-yesno${EXEEXT}; ./test-yesno${EXEEXT} 3; cat) \
+  < ${p}in.tmp > ${p}out.tmp || exit 1
+cmp ${p}xout.tmp ${p}out.tmp || exit 1
+
+(./test-yesno${EXEEXT} 3; ./test-yesno${EXEEXT}; cat) \
+  < ${p}in.tmp > ${p}out.tmp || exit 1
+cmp ${p}xout.tmp ${p}out.tmp || exit 1
+
+# Test for behavior on pipe
+cat <<EOF > ${p}xout.tmp
+Y
+N
+EOF
+echo yes | ./test-yesno${EXEEXT} 2 > ${p}out.tmp || exit 1
+cmp ${p}xout.tmp ${p}out.tmp || exit 1
+
+# Test for behavior on EOF
+cat <<EOF > ${p}xout.tmp
+N
+EOF
+./test-yesno${EXEEXT} </dev/null > ${p}out.tmp || exit 1
+cmp ${p}xout.tmp ${p}out.tmp || exit 1
+
+# Test for behavior when stdin is closed
+./test-yesno${EXEEXT} 0 <&- > ${p}out.tmp && exit 1
+cmp ${p}xout.tmp ${p}out.tmp || exit 1
+
+# Cleanup
+rm -fr $tmpfiles
+
+exit 0