chiark / gitweb /
test suite: gpg-agent workaround: Add more debugging output.
[dgit.git] / tests / tstunt / gpg-withagent
1 #!/bin/sh
2 set -ex
3
4 d () {
5         date --iso-8601=ns >&2
6         ps -ef | grep gpg-agent >&2
7 }
8
9 d
10
11 retry_until_ok () {
12         sleeptime=0
13         d
14         while ! "$@"; do
15                 d
16                 case $sleeptime in
17                 ??.*)
18                         echo >&2 "$0: GPG AGENT STARTP $@ TIMED OUT"
19                         exit 127
20                         ;;
21                 esac
22                 sleep $sleeptime
23                 sleeptime=$(echo "($sleeptime + 0.001) * 2" | bc -l)
24         done
25 }
26
27 echo >&2 'GPG-WITHAGENT...'
28
29 agent_is_running () {
30         gpg-connect-agent --no-autostart </dev/null \
31                 '/echo dgit-gpg-agent-ok' /bye 2>&1 \
32         | grep dgit-gpg-agent-ok >&2
33 }
34
35
36 $DGIT_STUNT_AGENT --daemon </dev/null >&2
37 retry_until_ok agent_is_running
38
39 echo >&2 'GPG-WITHAGENT... RUNNING'
40
41 d
42
43 set +e
44 $DGIT_TEST_REAL_GPG                                     \
45         --agent-program=$DGIT_STUNT_AGENT "$@"
46 rc=$?
47 set -e
48
49 d
50
51 echo >&2 'GPG-WITHAGENT... STOPPING'
52
53 kill_agent_not_running () {
54         LC_MESSAGES=C gpg-connect-agent --no-autostart </dev/null \
55                 KILLAGENT /bye 2>&1 \
56         | tee -a /dev/stderr \
57         | grep 'no gpg-agent running' >&2
58 }
59
60 retry_until_ok kill_agent_not_running
61
62 echo >&2 'GPG-WITHAGENT... DONE'
63
64 d
65
66 exit $rc