Skip to content

Commit

Permalink
t0008: use named pipe (FIFO) to test check-ignore streaming
Browse files Browse the repository at this point in the history
sleeps in the check-ignore test suite are not ideal since they can
fail when the system is under load, or when a tool like valgrind is
used which drastically alters the timing.  Therefore we replace them
with a more robust solution using a named pipe (FIFO).

Thanks to Jeff King for coming up with the redirection wizardry
required to make this work.

http://article.gmane.org/gmane.comp.version-control.git/220916

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Adam Spiers authored and Junio C Hamano committed Apr 29, 2013
1 parent f1ed7fe commit b96114e
Showing 1 changed file with 17 additions and 21 deletions.
38 changes: 17 additions & 21 deletions t/t0008-ignores.sh
Original file line number Diff line number Diff line change
Expand Up @@ -688,27 +688,23 @@ do
'
done

test_expect_success 'setup: have stdbuf?' '
if which stdbuf >/dev/null 2>&1
then
test_set_prereq STDBUF
fi
'

test_expect_success STDBUF 'streaming support for --stdin' '
(
echo one
sleep 2
echo two
) | stdbuf -oL git check-ignore -v -n --stdin >out &
pid=$! &&
sleep 1 &&
grep "^\.gitignore:1:one one" out &&
test $( wc -l <out ) = 1 &&
sleep 2 &&
grep "^:: two" out &&
test $( wc -l <out ) = 2 &&
( wait $pid || kill $pid || : ) 2>/dev/null
test_expect_success PIPE 'streaming support for --stdin' '
mkfifo in out &&
(git check-ignore -n -v --stdin <in >out &) &&
# We cannot just "echo >in" because check-ignore would get EOF
# after echo exited; instead we open the descriptor in our
# shell, and then echo to the fd. We make sure to close it at
# the end, so that the subprocess does get EOF and dies
# properly.
exec 9>in &&
test_when_finished "exec 9>&-" &&
echo >&9 one &&
read response <out &&
echo "$response" | grep "^\.gitignore:1:one one" &&
echo >&9 two &&
read response <out &&
echo "$response" | grep "^:: two"
'

test_done

0 comments on commit b96114e

Please sign in to comment.