1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

* lib.scm (signals-error?, signals-error?*): New macro and function.

* tests/reader.test: Use them.
This commit is contained in:
Jim Blandy 1999-09-11 18:46:32 +00:00
parent a2226cafa9
commit 69c74140dd
2 changed files with 27 additions and 7 deletions

View file

@ -42,7 +42,10 @@
format-test-name
;; Finding test input files.
data-file)
data-file
;; Noticing whether an error occurs.
signals-error? signals-error?*)
;;;; If you're using Emacs's Scheme mode:
@ -417,3 +420,22 @@
(or (file-exists? f)
(error "Test suite data file does not exist: " f))
f))
;;;; Detecting whether errors occur
;;; (signals-error?* KEY THUNK)
;;; Apply THUNK, catching errors. If any errors occur, return #t;
;;; otherwise, return #f.
;;;
;;; KEY indicates the sort of errors to look for; it can be a symbol,
;;; indicating that only errors with that name should be caught, or
;;; #t, meaning that any kind of error should be caught.
(define (signals-error?* key thunk)
(catch key
(lambda () (thunk) #f)
(lambda args #t)))
(defmacro signals-error? key-and-body
`(signals-error?* ,(car key-and-body)
(lambda () ,@(cdr key-and-body))))

View file

@ -5,12 +5,10 @@
(pass-if (call-with-output-string (lambda (port)
(display "Try to read " port)
(write string port)))
(catch 'signal
(lambda ()
(call-with-input-string string
(lambda (p) (read p)))
#t)
(lambda args #f))))
(not (signals-error?
'signal
(call-with-input-string string
(lambda (p) (read p)))))))
(try-to-read "0")
(try-to-read "1++i")