From 18a0eb9db48e00753804a621ded4a623cdb717d1 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 15 Jul 2024 11:15:11 -0500 Subject: [PATCH] adjust the printing of exceptions to include all of the details closes #177 --- rackunit-lib/rackunit/private/format.rkt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/rackunit-lib/rackunit/private/format.rkt b/rackunit-lib/rackunit/private/format.rkt index a3ea019..3c0a6c5 100644 --- a/rackunit-lib/rackunit/private/format.rkt +++ b/rackunit-lib/rackunit/private/format.rkt @@ -172,11 +172,19 @@ (display-delimiter))) (define (display-raised-message v) - (if (exn? v) - (when (not (equal? (exn-message v) "")) - (newline) - (displayln (exn-message v))) - (printf "\nA value other than an exception was raised: ~e\n" v))) + (cond + [(exn:test? v) + (when (not (equal? (exn-message v) "")) + (newline) + (displayln (exn-message v)))] + [(exn:fail? v) + (define sp (open-output-string)) + (parameterize ([current-error-port sp]) + ((error-display-handler) (exn-message v) v)) + (display " ") + (display (regexp-replace* #rx"\n(.)" (get-output-string sp) "\n \\1"))] + [else + (printf "\nA value other than an exception was raised: ~e\n" v)])) (define (display-delimiter) (displayln "--------------------"))