tests: Refine exception handling.
authorJustus Winter <justus@g10code.com>
Mon, 19 Sep 2016 15:19:00 +0000 (17:19 +0200)
committerJustus Winter <justus@g10code.com>
Mon, 19 Sep 2016 16:49:17 +0000 (18:49 +0200)
* tests/gpgscm/init.scm (catch): Bind all arguments to '*error*' in
the error handler, update and fix comment.
(*error-hook*): Revert to original definition.
* tests/gpgscm/tests.scm (tr:do): Adapt accordingly.
* tests/openpgp/issue2419.scm: Likewise.

Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/init.scm
tests/gpgscm/tests.scm
tests/openpgp/issue2419.scm

index b32172b..f8fd71a 100644 (file)
 ;
 ;    "Catch" establishes a scope spanning multiple call-frames until
 ;    another "catch" is encountered.  Within the recovery expression
-;    the thrown exception is bound to *error*.
+;    the thrown exception is bound to *error*.  Errors can be rethrown
+;    using (apply throw *error*).
 ;
 ;    Exceptions are thrown with:
 ;
 ;         (throw "message")
 ;
-;    If used outside a (catch ...), reverts to (error "message)
+;    If used outside a (catch ...), reverts to (error "message")
 
 (define *handlers* (list))
 
 (macro (catch form)
      (let ((label (gensym)))
           `(call/cc (lambda (**exit**)
-               (push-handler (lambda (*error*) (**exit** ,(cadr form))))
+               (push-handler (lambda *error* (**exit** ,(cadr form))))
                (let ((,label (begin ,@(cddr form))))
                     (pop-handler)
                     ,label)))))
 
-(define (*error-hook* . args)
-  (throw args))
+(define *error-hook* throw)
 
 
 ;;;;; Definition of MAKE-ENVIRONMENT, to be used with two-argument EVAL
index 0738bc6..7b88e0e 100644 (file)
          (if error
              (begin
                (for-each remove-temporary-file tmpfiles')
-               (throw error)))
+               (apply throw error)))
          (loop tmpfiles' sink (cdr cmds))))))
 
 (define (tr:open pathname)
index efc42a6..1f87d1b 100755 (executable)
@@ -23,6 +23,6 @@
 (lettmp
  (onebyte)
  (dearmor (in-srcdir "samplemsgs/issue2419.asc") onebyte)
- (catch (assert (string-contains? *error* "invalid packet"))
+ (catch (assert (string-contains? (car *error*) "invalid packet"))
        (call-popen `(,@GPG --list-packets ,onebyte) "")
        (error "Expected an error but got none")))