git-daemon is not launched properly in t5570:
$ GIT_TEST_GIT_DAEMON=t ./t5570-git-daemon.sh ok 1 - setup repository ok 2 - create git-accessible bare repository not ok - 3 clone git repository not ok - 4 fetch changes via git protocol ...
Current setup code to spawn git daemon (start_git_daemon() in
lib-git-daemon.sh) redirects daemon output to a pipe, and then
redirects input from this pipe to a different fd, which is in turn
connected to a terminal:
mkfifo git_daemon_output
git daemon ... >&3 2>git_daemon_output
{
...
cat >&4
} <git_daemon_outputUnfortunately, it seems that the shell (at least bash 4.1-3 from debian) closes the pipe and cat doesn't really copy any messages. This causes git-daemon to die.
Running 'strace -o log cat' instead of just 'cat' shows that no input
is read:
execve("/bin/cat", ...) = 0
...
read(0, "", 8192) = 0
close(0) = 0
close(1) = 0
close(2) = 0
exit_group(0) = ?I guess that the shell closes the redirection when exiting the {}-delimited part. It seems easiest to move the cat invocation outside of the {}-delimited part and provide a separate redirection which will not be closed.
While at it, print the address on which git-daemon is started, to make debugging easier.
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> --- t/lib-git-daemon.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Show changes to t/lib-git-daemon.sh +3 −2
diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh index ef2d01f..8f9c1b6 100644 --- a/t/lib-git-daemon.sh +++ b/t/lib-git-daemon.sh @@ -22,7 +22,7 @@ start_git_daemon() { trap 'code=$?; stop_git_daemon; (exit $code); die' EXIT - say >&3 "Starting git daemon ..." + say >&3 "Starting git daemon on $GIT_DAEMON_URL ..." mkfifo git_daemon_output git daemon --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \ --reuseaddr --verbose \ @@ -33,7 +33,6 @@ start_git_daemon() { { read line echo >&4 "$line" - cat >&4 & # Check expected output if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble" @@ -44,6 +43,8 @@ start_git_daemon() { error "git daemon failed to start" fi } <git_daemon_output + + cat <git_daemon_output >&4 & } stop_git_daemon() {
-- 1.7.10.226.gfe575