diff --git a/tests/gpgsm/export.scm b/tests/gpgsm/export.scm index 1ee91e491..47fb06e20 100644 --- a/tests/gpgsm/export.scm +++ b/tests/gpgsm/export.scm @@ -25,7 +25,7 @@ (lambda (cert) (lettmp (exported) (call-check `(,@gpgsm --output ,exported --export ,cert::uid::CN)) - (with-ephemeral-home-directory + (with-ephemeral-home-directory setup-gpgsm-environment (call-check `(,@gpgsm --import ,exported)) (assert (sm-have-public-key? cert))))) (lambda (cert) cert::uid::CN) diff --git a/tests/gpgsm/setup.scm b/tests/gpgsm/setup.scm index 91821a0f8..aa1ab4132 100644 --- a/tests/gpgsm/setup.scm +++ b/tests/gpgsm/setup.scm @@ -23,8 +23,6 @@ (unless (and tarball (not (null? tarball))) (error "Usage: setup.scm --create-tarball ...")) -(with-ephemeral-home-directory - (chdir (getenv "GNUPGHOME")) - (create-gpgsmhome) - (stop-agent) - (call-check `(,(tool 'gpgtar) --create --output ,(car tarball) "."))) +(setenv "GNUPGHOME" (getcwd) #t) +(create-gpgsmhome) +(call-check `(,(tool 'gpgtar) --create --output ,(car tarball) ".")) diff --git a/tests/openpgp/decrypt-session-key.scm b/tests/openpgp/decrypt-session-key.scm index 771b53da8..989ce304d 100755 --- a/tests/openpgp/decrypt-session-key.scm +++ b/tests/openpgp/decrypt-session-key.scm @@ -37,7 +37,7 @@ (lambda (name) (let* ((source (in-srcdir (string-append name ".asc"))) (key (get-session-key source))) - (with-ephemeral-home-directory + (with-ephemeral-home-directory setup-environment (tr:do (tr:open source) (tr:gpg "" `(--yes --decrypt --override-session-key ,key)) diff --git a/tests/openpgp/decrypt-unwrap-verify.scm b/tests/openpgp/decrypt-unwrap-verify.scm index 97a72e4c7..ef9a99a2c 100755 --- a/tests/openpgp/decrypt-unwrap-verify.scm +++ b/tests/openpgp/decrypt-unwrap-verify.scm @@ -35,7 +35,7 @@ ;; Then, verify the signature with a clean working directory ;; containing only Steve's public key. - (with-ephemeral-home-directory + (with-ephemeral-home-directory setup-environment (call-check `(,@gpg --import ,steve's-key)) (call-check `(,@gpg --verify ,unwrapped))))) '("encsig-2-keys-3" "encsig-2-keys-4"))) diff --git a/tests/openpgp/defs.scm b/tests/openpgp/defs.scm index e8d06c048..4271ba04a 100644 --- a/tests/openpgp/defs.scm +++ b/tests/openpgp/defs.scm @@ -289,14 +289,18 @@ ;; Evaluate a sequence of expressions with an ephemeral home ;; directory. -(define-macro (with-ephemeral-home-directory . expressions) +(define-macro (with-ephemeral-home-directory setup-fn . expressions) (let ((original-home-directory (gensym)) - (ephemeral-home-directory (gensym))) + (ephemeral-home-directory (gensym)) + (setup (gensym))) `(let ((,original-home-directory (getenv "GNUPGHOME")) - (,ephemeral-home-directory (mkdtemp))) + (,ephemeral-home-directory (mkdtemp)) + (,setup (delay (,setup-fn)))) (finally (unlink-recursively ,ephemeral-home-directory) (dynamic-wind - (lambda () (setenv "GNUPGHOME" ,ephemeral-home-directory #t)) + (lambda () + (force ,setup) + (setenv "GNUPGHOME" ,ephemeral-home-directory #t)) (lambda () ,@expressions) (lambda () (setenv "GNUPGHOME" ,original-home-directory #t))))))) diff --git a/tests/openpgp/setup.scm b/tests/openpgp/setup.scm index 4b3bfcb41..a7d14e71c 100755 --- a/tests/openpgp/setup.scm +++ b/tests/openpgp/setup.scm @@ -40,10 +40,9 @@ '(gpgconf gpg gpg-agent scdaemon gpgsm dirmngr gpg-connect-agent gpg-preset-passphrase gpgtar pinentry))) -(with-ephemeral-home-directory - (chdir (getenv "GNUPGHOME")) - (create-gpghome) - (start-agent) - (create-legacy-gpghome) - (stop-agent) - (call-check `(,(tool 'gpgtar) --create --output ,(cadr *args*) "."))) +(setenv "GNUPGHOME" (getcwd) #t) +(create-gpghome) +(start-agent) +(create-legacy-gpghome) +(stop-agent) +(call-check `(,(tool 'gpgtar) --create --output ,(cadr *args*) "."))