1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-15 17:00:26 +00:00

Fix epg-tests with dummy-pinentry program (Bug#23619)

* test/data/epg/dummy-pinentry: New file.
* test/lisp/epg-tests.el (with-epg-tests): Add it to gpg-agent.conf
when a passphrase is required.  Add debug declaration.  Set
GPG_AGENT_INFO non-destructively.
This commit is contained in:
Noam Postavsky 2017-02-21 20:46:15 -05:00
parent 7b5e1c8238
commit b7250496bd
2 changed files with 34 additions and 6 deletions

22
test/data/epg/dummy-pinentry Executable file
View File

@ -0,0 +1,22 @@
#! /bin/bash
# Dummy pinentry
#
# Copyright 2008 g10 Code GmbH
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This file is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE.
echo OK Your orders please
while read cmd; do
case $cmd in
GETPIN) echo D test0123456789; echo OK;;
*) echo OK;;
esac
done

View File

@ -52,8 +52,9 @@
require-secret-key)
&rest body)
"Set up temporary locations and variables for testing."
(declare (indent 1))
`(let ((epg-tests-home-directory (make-temp-file "epg-tests-homedir" t)))
(declare (indent 1) (debug (sexp body)))
`(let ((epg-tests-home-directory (make-temp-file "epg-tests-homedir" t))
(process-environment (cons "GPG_AGENT_INFO" process-environment)))
(unwind-protect
(let ((context (epg-make-context 'OpenPGP)))
(setf (epg-context-program context)
@ -63,11 +64,16 @@
`'require-passphrase))))
(setf (epg-context-home-directory context)
epg-tests-home-directory)
(setenv "GPG_AGENT_INFO")
,(if require-passphrase
`(epg-context-set-passphrase-callback
context
#'epg-tests-passphrase-callback))
`(with-temp-file (expand-file-name
"gpg-agent.conf" epg-tests-home-directory)
(insert "pinentry-program "
(expand-file-name "dummy-pinentry"
epg-tests-data-directory)
"\n")
(epg-context-set-passphrase-callback
context
#'epg-tests-passphrase-callback)))
,(if require-public-key
`(epg-import-keys-from-file
context