Skip to content

Commit 80a539a

Browse files
szedergitster
authored andcommitted
t/lib-git-daemon: make sure to kill the 'git-daemon' process
After 'start_git_daemon' starts 'git daemon' (note the space in the middle) in the background, it saves the background process' PID, so the daemon can be stopped at the end of the test script. However, 'git-daemon' is not a builtin but a dashed external command, which means that the dashless 'git daemon' executes the dashed 'git-daemon' command, and, consequently, the PID recorded is not the PID of the "real" daemon process, but that of the main 'git' wrapper. Now, if a test script involving 'git daemon' is interrupted by ctrl-C, then only the main 'git' process is stopped, but the real daemon process tends to survive somehow, and keeps on running in the background indefinitely, keeping the daemon's port to itself, and thus preventing subsequent runs of the same test script. Work this around by running 'git daemon' with the '--pidfile=...' option to save the PID of the real daemon process, and kill that process in 'stop_git_daemon' as well. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent c5c39f4 commit 80a539a

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

t/lib-git-daemon.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ fi
3131
test_set_port LIB_GIT_DAEMON_PORT
3232

3333
GIT_DAEMON_PID=
34+
GIT_DAEMON_PIDFILE="$PWD"/daemon.pid
3435
GIT_DAEMON_DOCUMENT_ROOT_PATH="$PWD"/repo
3536
GIT_DAEMON_HOST_PORT=127.0.0.1:$LIB_GIT_DAEMON_PORT
3637
GIT_DAEMON_URL=git://$GIT_DAEMON_HOST_PORT
@@ -49,7 +50,7 @@ start_git_daemon() {
4950
mkfifo git_daemon_output
5051
${LIB_GIT_DAEMON_COMMAND:-git daemon} \
5152
--listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
52-
--reuseaddr --verbose \
53+
--reuseaddr --verbose --pid-file="$GIT_DAEMON_PIDFILE" \
5354
--base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
5455
"$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
5556
>&3 2>git_daemon_output &
@@ -88,8 +89,9 @@ stop_git_daemon() {
8889
then
8990
error "git daemon exited with status: $ret"
9091
fi
92+
kill "$(cat "$GIT_DAEMON_PIDFILE")" 2>/dev/null
9193
GIT_DAEMON_PID=
92-
rm -f git_daemon_output
94+
rm -f git_daemon_output "$GIT_DAEMON_PIDFILE"
9395
}
9496

9597
# A stripped-down version of a netcat client, that connects to a "host:port"

0 commit comments

Comments
 (0)