diff options
author | Noam Postavsky <npostavs@gmail.com> | 2017-02-21 20:46:15 -0500 |
---|---|---|
committer | Noam Postavsky <npostavs@gmail.com> | 2017-02-28 19:57:35 -0500 |
commit | b7250496bd2d681a7a7f3c958eb3f0047b5c0a22 (patch) | |
tree | 45ade9b45313fcca74a6c018d186dc4d24a2f681 /test | |
parent | 7b5e1c8238ef961fd3305b1dce053b9bced684ba (diff) | |
download | emacs-b7250496bd2d681a7a7f3c958eb3f0047b5c0a22.tar.gz |
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.
Diffstat (limited to 'test')
-rwxr-xr-x | test/data/epg/dummy-pinentry | 22 | ||||
-rw-r--r-- | test/lisp/epg-tests.el | 18 |
2 files changed, 34 insertions, 6 deletions
diff --git a/test/data/epg/dummy-pinentry b/test/data/epg/dummy-pinentry new file mode 100755 index 00000000000..2228dfb0c6d --- /dev/null +++ b/test/data/epg/dummy-pinentry @@ -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 diff --git a/test/lisp/epg-tests.el b/test/lisp/epg-tests.el index ea2b62c3584..c61527207ff 100644 --- a/test/lisp/epg-tests.el +++ b/test/lisp/epg-tests.el @@ -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 |