diff options
Diffstat (limited to 'tests/openpgp/defs.scm')
-rw-r--r-- | tests/openpgp/defs.scm | 12 |
1 files changed, 8 insertions, 4 deletions
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))))))) |