summaryrefslogtreecommitdiff
path: root/tests/start-stop-agent
diff options
context:
space:
mode:
Diffstat (limited to 'tests/start-stop-agent')
-rwxr-xr-xtests/start-stop-agent21
1 files changed, 16 insertions, 5 deletions
diff --git a/tests/start-stop-agent b/tests/start-stop-agent
index ab47d8d..3ce6f22 100755
--- a/tests/start-stop-agent
+++ b/tests/start-stop-agent
@@ -15,11 +15,12 @@ fi
GPG_AGENT_INFO=
export GPG_AGENT_INFO
+GPG_AGENT=$(which gpg-agent)
token=$(echo "gpgme-$(pwd)" | tr ' ' '_')
if [ "$1" = "--stop" ]; then
- if [ "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
+ if [ "$(gpg-connect-agent --no-autostart getval\ $token /bye 2>/dev/null | head -1)" \
!= "D set" ]; then
echo "gpg-agent not running" >&2
exit 0
@@ -29,15 +30,25 @@ if [ "$1" = "--stop" ]; then
exit 0
fi
-if [ "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
+if [ "$(gpg-connect-agent --no-autostart getval\ $token /bye 2>/dev/null | head -1)" \
= "D set" ]; then
echo "gpg-agent already running" >&2
exit 0
fi
-echo "starting gpg-agent " >&2
-gpg-connect-agent putval\ $token\ set /bye >/dev/null 2>&1
-if [ "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
+echo "starting gpg-agent.." >&2
+
+# GnuPG prior to 2.1.12 needs --allow-loopback-pinentry for the
+# loopback entry to work. Old versions do not understand this though,
+# so we need to be careful.
+if "$GPG_AGENT" --gpgconf-test --allow-loopback-pinentry &&
+ test -f "$GNUPGHOME/gpg-agent.conf" &&
+ ! grep -q allow-loopback-pinentry "$GNUPGHOME/gpg-agent.conf"; then
+ echo allow-loopback-pinentry >> "$GNUPGHOME/gpg-agent.conf"
+fi
+
+gpg-connect-agent --agent-program="${GPG_AGENT}|--debug-quick-random" putval\ $token\ set /bye
+if [ $? -ne 0 -o "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
!= "D set" ]; then
echo "error starting gpg-agent" >&2
exit 1