rackunit: don't assume raised value is exn
Closes PR 11632
This commit is contained in:
parent
f6b73f01e1
commit
b45b111960
|
@ -33,11 +33,11 @@
|
|||
check-not-equal?
|
||||
fail)
|
||||
|
||||
;; default-check-handler : exn -> any
|
||||
;; default-check-handler : any -> any
|
||||
(define (default-check-handler e)
|
||||
(display-test-failure/error e))
|
||||
|
||||
;; parameter current-check-handler : (-> exn any)
|
||||
;; parameter current-check-handler : (-> any any)
|
||||
(define current-check-handler
|
||||
(make-parameter
|
||||
default-check-handler
|
||||
|
@ -48,7 +48,7 @@
|
|||
|
||||
;; check-around : ( -> a) -> a
|
||||
(define (check-around thunk)
|
||||
(with-handlers ([exn? (current-check-handler)])
|
||||
(with-handlers ([(lambda (e) #t) (current-check-handler)])
|
||||
(thunk)))
|
||||
|
||||
;; top-level-check-around : ( -> a) -> a
|
||||
|
|
|
@ -58,13 +58,16 @@
|
|||
(begin
|
||||
(display "Unnamed test ")(newline))))
|
||||
|
||||
;; display-exn : exn -> void
|
||||
;; display-exn : any -> void
|
||||
;;
|
||||
;; Outputs a printed representation of the exception to
|
||||
;; the current-output-port
|
||||
(define (display-exn exn)
|
||||
;; If given non-exn value, says so.
|
||||
(define (display-exn v)
|
||||
(parameterize ((current-error-port (current-output-port)))
|
||||
((error-display-handler) (exn-message exn) exn)
|
||||
(if (exn? v)
|
||||
((error-display-handler) (exn-message v) v)
|
||||
(printf "A value other than an exception was raised: ~e\n" v))
|
||||
(newline)))
|
||||
|
||||
;; ----
|
||||
|
@ -93,6 +96,7 @@
|
|||
|
||||
;; ----
|
||||
|
||||
;; display-test-failure/error : any string/#f -> void
|
||||
(define (display-test-failure/error e [name #f])
|
||||
(parameterize ((current-output-port (current-error-port)))
|
||||
(display-delimiter)
|
||||
|
@ -103,7 +107,7 @@
|
|||
(when #t
|
||||
(parameterize ((error-print-context-length 0))
|
||||
((error-display-handler) (exn-message e) e)))]
|
||||
[(exn? e)
|
||||
[else
|
||||
(display-error) (newline)
|
||||
(display-exn e)])
|
||||
(display-delimiter)))
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
;;
|
||||
;; Run a test-case immediately, printing information on failure
|
||||
(define (default-test-case-around thunk)
|
||||
(with-handlers ([exn? default-test-case-handler])
|
||||
(with-handlers ([(lambda (e) #t) default-test-case-handler])
|
||||
(thunk)))
|
||||
|
||||
;; default-test-case-handler : exn -> any
|
||||
;; default-test-case-handler : any -> any
|
||||
(define (default-test-case-handler e)
|
||||
(display-test-failure/error e (current-test-name)))
|
||||
|
||||
|
|
|
@ -108,7 +108,8 @@
|
|||
((error-display-handler) (exn-message exn) exn)))]
|
||||
[(test-error? result)
|
||||
(let ([exn (test-error-result result)])
|
||||
(textui-display-check-info-stack (check-info-stack (exn-continuation-marks exn)))
|
||||
(when (exn? exn)
|
||||
(textui-display-check-info-stack (check-info-stack (exn-continuation-marks exn))))
|
||||
(display-exn exn))]
|
||||
[else (void)]))
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user