As I mentioned in my previous post, the "unit" that can succeed or fail is 
the "test case", and this will work:

#lang racket
(require rackunit)

(define-test-suite hw
  (test-case "one" (check-equal? 1 1))
  (test-case "two" (check-equal? 1 (/ 1 0)))
  (test-case "three" (check-equal? 1 2)))

(foldts-test-suite
 (λ (suite name before after seed) (before) seed)
 (λ (suite name before after seed kid-seed) (after) (append seed kid-seed))
 (λ (case name action seed)
   (let ([outcome (run-test-case name action)])
     (cons outcome seed)))
 empty
 hw)

;; Produces:
;; '(#<test-failure> #<test-error> #<test-success>)


You won't be able to catch errors from the test case in a handler -- this 
is handled by rackunit, so the `with-handlers` is useless there.

Alex.

On Saturday, May 23, 2020 at 10:47:53 PM UTC+8, sk wrote:
>
> Sorry to be thinking out loud here…
>
> I thought the reason Alex might be using `foldts-test-suite` instead of 
> `fold-test-results` is because the latter automatically runs each test but 
> the former leaves that in programmatic control. I thought this would enable 
> me to catch exceptions, thus (using Alex's really good names for the 
> pieces). E.g.:
>
> (define-test-suite hw
>   (check-equal? 1 1)
>   (check-equal? 1 (/ 1 0))
>   (check-equal? 1 2))
>
> (foldts-test-suite
>  (λ (suite name before after seed) (before) seed)
>  (λ (suite name before after seed kid-seed) (after) (append seed kid-seed))
>  (λ (case name action seed)
>    (let ([outcome (with-handlers ([exn:fail?
>                                    (λ (e)
>                                      (println "got here")
>                                      (cons 'test-failed seed))])
>                     (run-test-case name action))])
>      (cons outcome seed)))
>  empty
>  hw)
>
> Unfortunately, the `with-handers` does not seem to be taking effect at 
> all: the runner still halts with an error. Can anyone see what I'm missing?
>
> Shriram
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/71d75396-8df2-4dfb-9963-f1e8d6eaee16%40googlegroups.com.

Reply via email to