tests: Fix macro.
[gnupg.git] / tests / openpgp / defs.scm
index 863d128..837e096 100644 (file)
 
 ;; Evaluate a sequence of expressions with an ephemeral home
 ;; directory.
-(macro (with-ephemeral-home-directory form)
-  `(let ((original-home-directory (getenv "GNUPGHOME")))
-     (with-temporary-working-directory
-      (define ephemeral-home-directory (getcwd))
-      (dynamic-wind
-         (lambda () (setenv "GNUPGHOME" ephemeral-home-directory #t))
-         (lambda () ,@(cdr form))
-         (lambda () (setenv "GNUPGHOME" original-home-directory #t))))))
+(define-macro (with-ephemeral-home-directory . expressions)
+  (let ((original-home-directory (gensym))
+       (ephemeral-home-directory (gensym)))
+    `(let ((,original-home-directory (getenv "GNUPGHOME"))
+          (,ephemeral-home-directory (mkdtemp)))
+       (finally (unlink-recursively ,ephemeral-home-directory)
+        (dynamic-wind
+            (lambda () (setenv "GNUPGHOME" ,ephemeral-home-directory #t))
+            (lambda () ,@expressions)
+            (lambda () (setenv "GNUPGHOME" ,original-home-directory #t)))))))
 
 ;; Call GPG to obtain the hash sums.  Either specify an input file in
 ;; ARGS, or an string in INPUT.  Returns a list of (<algo>