Re: [PATCH] t5570: forward git-daemon messages in a different way
- From
Clemens Buchacher <drizzd@aon.at>
- Date
- Apr 16, 2012, 22:44 UTC
- Message-ID
- <20120416224424.GA10314@ecki>
- In-Reply-To
- <20120416174230.GA19226@sigill.intra.peff.net>
On Mon, Apr 16, 2012 at 01:42:30PM -0400, Jeff King wrote:
Show 16 quoted lines
>
> Hmm. t5570 seems to pass reliably on dash for me with:
>
> diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh
> index ef2d01f..9f52cb6 100644
> --- a/t/lib-git-daemon.sh
> +++ b/t/lib-git-daemon.sh
> @@ -33,7 +33,7 @@ start_git_daemon() {
> {
> read line
> echo >&4 "$line"
> - cat >&4 &
> + cat >&4 <git_daemon_output &
>
> # Check expected output
> if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble"Yes, me too. I can reproduce reliably with dash and the above fixes it reliably.
> But the test above does fail.
Which one do you mean? The output check works for me.
> Is it purely luck of the timing that git-daemon never gets SIGPIPE? I
> guess the problem is that the {}-section can finish before "cat
> <git_daemon_output" has actually opened the pipe?No clue. But shouldn't the fork return only after the fd's have been opened successfully? If I change cat to "(echo di; cat; echo do); sleep 1; pgrep yes", then one can see that cat terminates right away, even though yes is still running. It's as if cat never gets to read from the pipe, but from /dev/null instead. A bug in dash?
> I'd just feel better about the solution if we were sure we understood > the exact problem.
Yeah. I have to admit that I have a strongly empirical approach to these things and no true understanding of the inner workings.