]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t: prepare `stop_git_daemon ()` for `set -e`
authorPatrick Steinhardt <ps@pks.im>
Tue, 21 Apr 2026 07:34:16 +0000 (09:34 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Apr 2026 22:53:35 +0000 (15:53 -0700)
We have a couple of calls to `stop_git_daemon ()` outside of specific
test cases that will kill a backgrounded git-daemon(1) process and
expect the process with a specific error code. While these function
calls do end up killing git-daemon(1), the error handling we have in
those contexts is basically ineffective. So while we expect the process
to exit with a specific error code, we will just continue with any error
in case it doesn't.

This will change once we enable `set -e` in a subsequent commit. There's
two issues though that will make this _always_ fail:

  - Our call to `wait` is expected to fail, but because it's not part of
    a condition it will cause us to bail out immediately with `set -e`.

  - We try to kill git-daemon(1) a second time via the pidfile. We can
    generally expect that this is the same PID though as we had in the
    "GIT_DAEMON_PID" environment variable, and thus it's more likely
    than not that we have already killed it, and the call to kill will
    fail.

Prepare for this change by handling the failure of `wait` with `||` and
by silencing failures of the second call to `kill`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/lib-git-daemon.sh

index e62569222b55aa3d3036eb9e61562af8d13159ba..d172aa51f0c386ff1340fa3a06fd059d37cb3606 100644 (file)
@@ -85,14 +85,16 @@ stop_git_daemon() {
 
        # kill git-daemon child of git
        say >&3 "Stopping git daemon ..."
+
        kill "$GIT_DAEMON_PID"
-       wait "$GIT_DAEMON_PID" >&3 2>&4
-       ret=$?
+       ret=0; wait "$GIT_DAEMON_PID" >&3 2>&4 || ret=$?
+
        if ! test_match_signal 15 $ret
        then
                error "git daemon exited with status: $ret"
        fi
-       kill "$(cat "$GIT_DAEMON_PIDFILE")" 2>/dev/null
+
+       kill "$(cat "$GIT_DAEMON_PIDFILE")" 2>/dev/null || :
        GIT_DAEMON_PID=
        rm -f git_daemon_output "$GIT_DAEMON_PIDFILE"
 }