30 lines
722 B
Racket
30 lines
722 B
Racket
#lang racket/base
|
|
(require racket/contract/base
|
|
racket/gui/base
|
|
"private/base.rkt"
|
|
"private/gui/gui.rkt")
|
|
|
|
(define (test/gui #:wait? [wait? #f]
|
|
. tests)
|
|
(let* ([es (make-eventspace)]
|
|
[runner
|
|
(parameterize ((current-eventspace es))
|
|
(make-gui-runner))])
|
|
(sleep/yield 0.1) ;; give the gui a chance to initialize
|
|
(apply runner tests)
|
|
(when wait? (void (sync es)))))
|
|
|
|
(define test/c (or/c rackunit-test-case? rackunit-test-suite?))
|
|
|
|
(provide/contract
|
|
[test/gui
|
|
(->* ()
|
|
(#:wait? any/c)
|
|
#:rest (listof test/c)
|
|
any)]
|
|
[make-gui-runner
|
|
(->* ()
|
|
()
|
|
(->* () () #:rest (listof test/c)
|
|
any))])
|