; Trace epg-tests (Bug#23561)

This commit is contained in:
Noam Postavsky 2018-07-14 08:58:26 -04:00
parent 7acb87ab97
commit 6de91809a3

View file

@ -42,17 +42,34 @@
"2.0")
prog-alist))
(defvar epg-tests--trace nil)
(defun epg-tests-find-usable-gpg-configuration
(&optional require-passphrase require-public-key)
;; Clear config cache because we may be using a different
;; program-alist. We do want to update the cache, so that
;; `epg-make-context' can use our result.
(setq epg--configurations nil)
(epg-find-configuration 'OpenPGP nil
;; The symmetric operations fail on Hydra
;; with gpg 2.0.
(if (or (not require-passphrase) require-public-key)
epg-tests--config-program-alist)))
;; Tracing for Bug#23561, but only do it once per run.
(when epg-tests--trace
(dolist (fun '(epg-find-configuration
executable-find
epg-check-configuration
epg-config--make-gpg-configuration))
(trace-function-background fun))
(setq epg-tests--trace nil))
(prog1 (unwind-protect
(epg-find-configuration
'OpenPGP nil
;; The symmetric operations fail on Hydra
;; with gpg 2.0.
(if (or (not require-passphrase) require-public-key)
epg-tests--config-program-alist))
(untrace-all))
(when (get-buffer "*trace-output*")
(princ (with-current-buffer "*trace-output*" (prog1 (buffer-string)
(erase-buffer)))
#'external-debugging-output))))
(defun epg-tests-passphrase-callback (_c _k _d)
;; Need to create a copy here, since the string will be wiped out
@ -65,7 +82,8 @@
&rest body)
"Set up temporary locations and variables for testing."
(declare (indent 1) (debug (sexp body)))
`(let* ((epg-tests-home-directory (make-temp-file "epg-tests-homedir" t))
`(let* ((epg-debug epg-tests--trace)
(epg-tests-home-directory (make-temp-file "epg-tests-homedir" t))
(process-environment
(append
(list "GPG_AGENT_INFO"
@ -104,10 +122,15 @@
(make-local-variable 'epg-tests-context)
(setq epg-tests-context context)
,@body))
(when epg-debug-buffer
(princ (with-current-buffer epg-debug-buffer
(prog1 (buffer-string) (erase-buffer)))
#'external-debugging-output))
(when (file-directory-p epg-tests-home-directory)
(delete-directory epg-tests-home-directory t)))))
(ert-deftest epg-decrypt-1 ()
(setq epg-tests--trace t)
(with-epg-tests (:require-passphrase t)
(should (equal "test"
(epg-decrypt-string epg-tests-context "\
@ -119,6 +142,7 @@ jA0EAwMCE19JBLTvvmhgyRrGGglRbnKkK9PJG8fDwO5ccjysrR7IcdNcnA==
-----END PGP MESSAGE-----")))))
(ert-deftest epg-roundtrip-1 ()
(setq epg-tests--trace t)
(with-epg-tests (:require-passphrase t)
(let ((cipher (epg-encrypt-string epg-tests-context "symmetric" nil)))
(should (equal "symmetric"