]>
Commit | Line | Data |
---|---|---|
71039fb9 CB |
1 | #!/bin/sh |
2 | ||
3 | if test -z "$GIT_TEST_GIT_DAEMON" | |
4 | then | |
5 | skip_all="git-daemon testing disabled (define GIT_TEST_GIT_DAEMON to enable)" | |
6 | test_done | |
7 | fi | |
8 | ||
9 | LIB_GIT_DAEMON_PORT=${LIB_GIT_DAEMON_PORT-'8121'} | |
10 | ||
11 | GIT_DAEMON_PID= | |
12 | GIT_DAEMON_DOCUMENT_ROOT_PATH="$PWD"/repo | |
13 | GIT_DAEMON_URL=git://127.0.0.1:$LIB_GIT_DAEMON_PORT | |
14 | ||
15 | start_git_daemon() { | |
16 | if test -n "$GIT_DAEMON_PID" | |
17 | then | |
18 | error "start_git_daemon already called" | |
19 | fi | |
20 | ||
21 | mkdir -p "$GIT_DAEMON_DOCUMENT_ROOT_PATH" | |
22 | ||
23 | trap 'code=$?; stop_git_daemon; (exit $code); die' EXIT | |
24 | ||
25 | say >&3 "Starting git daemon ..." | |
561b133c | 26 | mkfifo git_daemon_output |
71039fb9 CB |
27 | git daemon --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \ |
28 | --reuseaddr --verbose \ | |
29 | --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ | |
30 | "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ | |
561b133c | 31 | >&3 2>git_daemon_output & |
71039fb9 | 32 | GIT_DAEMON_PID=$! |
561b133c | 33 | { |
46e35815 | 34 | read line <&7 |
561b133c | 35 | echo >&4 "$line" |
46e35815 JS |
36 | cat <&7 >&4 & |
37 | } 7<git_daemon_output && | |
561b133c | 38 | |
46e35815 JS |
39 | # Check expected output |
40 | if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble" | |
41 | then | |
42 | kill "$GIT_DAEMON_PID" | |
43 | wait "$GIT_DAEMON_PID" | |
44 | trap 'die' EXIT | |
45 | error "git daemon failed to start" | |
46 | fi | |
71039fb9 CB |
47 | } |
48 | ||
49 | stop_git_daemon() { | |
50 | if test -z "$GIT_DAEMON_PID" | |
51 | then | |
52 | return | |
53 | fi | |
54 | ||
55 | trap 'die' EXIT | |
56 | ||
57 | # kill git-daemon child of git | |
58 | say >&3 "Stopping git daemon ..." | |
59 | kill "$GIT_DAEMON_PID" | |
60 | wait "$GIT_DAEMON_PID" >&3 2>&4 | |
61 | ret=$? | |
62 | # expect exit with status 143 = 128+15 for signal TERM=15 | |
63 | if test $ret -ne 143 | |
64 | then | |
65 | error "git daemon exited with status: $ret" | |
66 | fi | |
67 | GIT_DAEMON_PID= | |
561b133c | 68 | rm -f git_daemon_output |
71039fb9 | 69 | } |