]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix epg-tests with dummy-pinentry program (Bug#23619)
authorNoam Postavsky <npostavs@gmail.com>
Wed, 22 Feb 2017 01:46:15 +0000 (20:46 -0500)
committerNoam Postavsky <npostavs@gmail.com>
Wed, 1 Mar 2017 00:57:35 +0000 (19:57 -0500)
* 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.

test/data/epg/dummy-pinentry [new file with mode: 0755]
test/lisp/epg-tests.el

diff --git a/test/data/epg/dummy-pinentry b/test/data/epg/dummy-pinentry
new file mode 100755 (executable)
index 0000000..2228dfb
--- /dev/null
@@ -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
index ea2b62c35843822d90708f29cf47f905667b398d..c61527207ff3209571f80d8d8407998b29fe99fa 100644 (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)
                                   `'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