mirror of
https://github.com/git/git.git
synced 2024-12-14 20:33:46 +08:00
c74c72034f
A #! line in these files is misleading, since these scriptlets are meant to be sourced with '.' (using whatever shell sources them) instead of run directly using the interpreter named on the #! line. Removing the #! line shouldn't hurt syntax highlighting since these files have filenames ending with '.sh'. For documentation, add a brief description of how the files are meant to be used in place of the shebang line. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
86 lines
1.7 KiB
Bash
86 lines
1.7 KiB
Bash
# Shell library to run git-daemon in tests. Ends the test early if
|
|
# GIT_TEST_GIT_DAEMON is not set.
|
|
#
|
|
# Usage:
|
|
#
|
|
# . ./test-lib.sh
|
|
# . "$TEST_DIRECTORY"/lib-git-daemon.sh
|
|
# start_git_daemon
|
|
#
|
|
# test_expect_success '...' '
|
|
# ...
|
|
# '
|
|
#
|
|
# test_expect_success ...
|
|
#
|
|
# stop_git_daemon
|
|
# test_done
|
|
|
|
if test -z "$GIT_TEST_GIT_DAEMON"
|
|
then
|
|
skip_all="git-daemon testing disabled (define GIT_TEST_GIT_DAEMON to enable)"
|
|
test_done
|
|
fi
|
|
|
|
LIB_GIT_DAEMON_PORT=${LIB_GIT_DAEMON_PORT-'8121'}
|
|
|
|
GIT_DAEMON_PID=
|
|
GIT_DAEMON_DOCUMENT_ROOT_PATH="$PWD"/repo
|
|
GIT_DAEMON_URL=git://127.0.0.1:$LIB_GIT_DAEMON_PORT
|
|
|
|
start_git_daemon() {
|
|
if test -n "$GIT_DAEMON_PID"
|
|
then
|
|
error "start_git_daemon already called"
|
|
fi
|
|
|
|
mkdir -p "$GIT_DAEMON_DOCUMENT_ROOT_PATH"
|
|
|
|
trap 'code=$?; stop_git_daemon; (exit $code); die' EXIT
|
|
|
|
say >&3 "Starting git daemon ..."
|
|
mkfifo git_daemon_output
|
|
git daemon --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
|
|
--reuseaddr --verbose \
|
|
--base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
|
|
"$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
|
|
>&3 2>git_daemon_output &
|
|
GIT_DAEMON_PID=$!
|
|
{
|
|
read line <&7
|
|
echo >&4 "$line"
|
|
cat <&7 >&4 &
|
|
} 7<git_daemon_output &&
|
|
|
|
# Check expected output
|
|
if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble"
|
|
then
|
|
kill "$GIT_DAEMON_PID"
|
|
wait "$GIT_DAEMON_PID"
|
|
trap 'die' EXIT
|
|
error "git daemon failed to start"
|
|
fi
|
|
}
|
|
|
|
stop_git_daemon() {
|
|
if test -z "$GIT_DAEMON_PID"
|
|
then
|
|
return
|
|
fi
|
|
|
|
trap 'die' EXIT
|
|
|
|
# kill git-daemon child of git
|
|
say >&3 "Stopping git daemon ..."
|
|
kill "$GIT_DAEMON_PID"
|
|
wait "$GIT_DAEMON_PID" >&3 2>&4
|
|
ret=$?
|
|
# expect exit with status 143 = 128+15 for signal TERM=15
|
|
if test $ret -ne 143
|
|
then
|
|
error "git daemon exited with status: $ret"
|
|
fi
|
|
GIT_DAEMON_PID=
|
|
rm -f git_daemon_output
|
|
}
|