summaryrefslogtreecommitdiff
path: root/tests/tstunt/gpg-withagent
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-30 22:40:02 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-30 22:40:02 +0100
commita300724a321a26770ccf701e0a638c7bfa93fa5c (patch)
treec7d9b316f0c4769cd9d418ca8c5ae48f5e088b7c /tests/tstunt/gpg-withagent
parentf8ba14071c7977a0ea2d8f1882202136b7b88dce (diff)
parent8916ea3e2ca88820e6ad1d0c8823a37221f8ed88 (diff)
Merge remote-tracking branch 'dgit/dgit/experimental'
Conflicts: debian/changelog Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'tests/tstunt/gpg-withagent')
-rwxr-xr-xtests/tstunt/gpg-withagent68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/tstunt/gpg-withagent b/tests/tstunt/gpg-withagent
new file mode 100755
index 0000000..b7b8bfd
--- /dev/null
+++ b/tests/tstunt/gpg-withagent
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -ex
+
+d () {
+ date --iso-8601=ns >&2
+ ps -ef | grep gpg-agent >&2 ||:
+}
+
+d
+
+retry_until_ok () {
+ sleeptime=0
+ d
+ while ! "$@"; do
+ d
+ case $sleeptime in
+ ??.*)
+ echo >&2 "$0: GPG AGENT STARTP $@ TIMED OUT"
+ exit 127
+ ;;
+ esac
+ sleep $sleeptime
+ sleeptime=$(echo "($sleeptime + 0.001) * 2" | bc -l)
+ done
+}
+
+kill_agent_not_running () {
+ LC_MESSAGES=C gpg-connect-agent --no-autostart </dev/null \
+ KILLAGENT /bye 2>&1 \
+ | tee -a /dev/stderr \
+ | grep 'no gpg-agent running' >&2
+}
+
+echo >&2 'GPG-WITHAGENT... PRE-STOPPING'
+
+retry_until_ok kill_agent_not_running
+
+agent_is_running () {
+ gpg-connect-agent --no-autostart </dev/null \
+ '/echo dgit-gpg-agent-ok' /bye 2>&1 \
+ | grep dgit-gpg-agent-ok >&2
+}
+
+
+$DGIT_STUNT_AGENT --daemon </dev/null >&2
+retry_until_ok agent_is_running
+
+echo >&2 'GPG-WITHAGENT... RUNNING'
+
+d
+
+set +e
+$DGIT_TEST_REAL_GPG \
+ --agent-program=$DGIT_STUNT_AGENT "$@" 2>&9
+rc=$?
+set -e
+
+d
+
+echo >&2 'GPG-WITHAGENT... STOPPING'
+
+retry_until_ok kill_agent_not_running
+
+echo >&2 'GPG-WITHAGENT... DONE'
+
+d
+
+exit $rc