From b1712b76d1466646201a8b736817a9f822be9af8 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Sun, 4 Nov 2018 01:55:45 -0500 Subject: [PATCH] Handle errors during tests. --- .../tests/racket/testing.rktl | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/testing.rktl b/pkgs/racket-test-core/tests/racket/testing.rktl index cdd779fd40..6bc7ffd9b5 100644 --- a/pkgs/racket-test-core/tests/racket/testing.rktl +++ b/pkgs/racket-test-core/tests/racket/testing.rktl @@ -105,15 +105,20 @@ transcript. (set! number-of-tests (add1 number-of-tests)) (printf "~s ==> " form) (flush-output) - (let ([res (if (procedure? fun) - (if kws (keyword-apply fun kws kvs args) (apply fun args)) - (car args))]) - (printf "~s\n" res) - (let ([ok? (equal? expect res)]) - (unless ok? - (record-error (list res expect form)) - (printf " BUT EXPECTED ~s\n" expect)) - ok?))) + (with-handlers ([(λ (e) (not (exn:break? e))) ;; handle "exceptions" that are arbitrary values + (λ (e) + (printf "GOT EXN ~s\n" e) + (record-error (list `(EXN ,e) expect form)) + (printf " BUT EXPECTED ~s\n" expect))]) + (let ([res (if (procedure? fun) + (if kws (keyword-apply fun kws kvs args) (apply fun args)) + (car args))]) + (printf "~s\n" res) + (let ([ok? (equal? expect res)]) + (unless ok? + (record-error (list res expect form)) + (printf " BUT EXPECTED ~s\n" expect)) + ok?)))) (define (test/kw kws kvs expect fun . args) (test* expect fun args kws kvs)) (define (test expect fun . args) (test* expect fun args #f #f)) (make-keyword-procedure test/kw test)))