summaryrefslogtreecommitdiff
path: root/test-suite
diff options
context:
space:
mode:
authorJim Blandy <jimb@red-bean.com>1999-09-11 18:46:32 +0000
committerJim Blandy <jimb@red-bean.com>1999-09-11 18:46:32 +0000
commit69c74140dde2d7dd543e8df6fc182b9a3e819cfa (patch)
tree0f60759136e2afb9dd9d9c72f64602065d239098 /test-suite
parenta2226cafa904f51111e957075c339acce4ce6676 (diff)
downloadguile-69c74140dde2d7dd543e8df6fc182b9a3e819cfa.tar.gz
* lib.scm (signals-error?, signals-error?*): New macro and function.
* tests/reader.test: Use them.
Diffstat (limited to 'test-suite')
-rw-r--r--test-suite/lib.scm24
-rw-r--r--test-suite/tests/reader.test10
2 files changed, 27 insertions, 7 deletions
diff --git a/test-suite/lib.scm b/test-suite/lib.scm
index bcf6bd400..4f1f5f710 100644
--- a/test-suite/lib.scm
+++ b/test-suite/lib.scm
@@ -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))))
diff --git a/test-suite/tests/reader.test b/test-suite/tests/reader.test
index 773e6b0fc..764cb3680 100644
--- a/test-suite/tests/reader.test
+++ b/test-suite/tests/reader.test
@@ -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")