diff options
author | Jim Blandy <jimb@red-bean.com> | 1999-09-11 18:46:32 +0000 |
---|---|---|
committer | Jim Blandy <jimb@red-bean.com> | 1999-09-11 18:46:32 +0000 |
commit | 69c74140dde2d7dd543e8df6fc182b9a3e819cfa (patch) | |
tree | 0f60759136e2afb9dd9d9c72f64602065d239098 /test-suite | |
parent | a2226cafa904f51111e957075c339acce4ce6676 (diff) | |
download | guile-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.scm | 24 | ||||
-rw-r--r-- | test-suite/tests/reader.test | 10 |
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") |