Tag
Hash :
1cf55d29
Author :
Date :
2007-08-19T15:47:14
Test yesno in combination with closein. * lib/yesno.c (yesno): Document use of stdin. * modules/yesno-tests (Files): New module. * tests/test-yesno.c (main): New file. * tests/test-yesno.sh: Likewise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 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
yn - 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