rackunit: added #:wait? arg to test/gui
original commit: 43d3b5d8bc06c610eb86ab7486b36ff50fc4135a
This commit is contained in:
commit
da4f8fc9f8
|
@ -1,20 +1,29 @@
|
|||
#lang racket/base
|
||||
(require racket/contract
|
||||
(rename-in "private/base.rkt")
|
||||
racket/gui/base
|
||||
"private/base.rkt"
|
||||
"private/gui/gui.rkt")
|
||||
|
||||
(define (test/gui . tests)
|
||||
(let ([runner (make-gui-runner)])
|
||||
(sleep 0.1) ;; give the gui a chance to initialize
|
||||
(apply runner tests)))
|
||||
(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
|
||||
(->* () () #:rest (listof test/c)
|
||||
(->* ()
|
||||
(#:wait? any/c)
|
||||
#:rest (listof test/c)
|
||||
any)]
|
||||
[make-gui-runner
|
||||
(->
|
||||
(->* () () #:rest (listof test/c)
|
||||
any))])
|
||||
(->* ()
|
||||
()
|
||||
(->* () () #:rest (listof test/c)
|
||||
any))])
|
||||
|
|
|
@ -14,8 +14,7 @@
|
|||
(define controller
|
||||
(new controller%))
|
||||
(define frame
|
||||
(parameterize ((current-eventspace (make-eventspace)))
|
||||
(make-view-frame controller)))
|
||||
(make-view-frame controller))
|
||||
(lambda tests
|
||||
(for ([test (in-list tests)])
|
||||
(run test controller))))
|
||||
|
|
|
@ -38,12 +38,15 @@ information.
|
|||
RackUnit also provides a GUI test runner, available from the
|
||||
@racketmodname[rackunit/gui] module.
|
||||
|
||||
@defproc[(test/gui [test (or/c test-case? test-suite?)] ...)
|
||||
any]{
|
||||
@defproc[(test/gui [test (or/c test-case? test-suite?)] ...
|
||||
[#:wait? wait? boolean? #f])
|
||||
void?]{
|
||||
|
||||
Creates a new RackUnit GUI window and runs each @racket[test]. The
|
||||
GUI is updated as tests complete.
|
||||
|
||||
When @racket[wait?] is true, @racket[test/gui] does not return until
|
||||
the test runner window has been closed.
|
||||
}
|
||||
|
||||
@defproc[(make-gui-runner)
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
racket/gui/base
|
||||
framework
|
||||
drscheme/tool
|
||||
racket/unit
|
||||
(prefix-in drlink: "private/gui/drracket-link.rkt"))
|
||||
racket/unit)
|
||||
|
||||
(provide tool@)
|
||||
|
||||
|
@ -13,8 +12,6 @@
|
|||
(define BACKTRACE-NO-MESSAGE "No message.")
|
||||
(define LINK-MODULE-SPEC 'rackunit/private/gui/drracket-link)
|
||||
|
||||
(define-namespace-anchor drracket-ns-anchor)
|
||||
|
||||
;; ----
|
||||
|
||||
;; close/eventspace : (a* -> b) -> (a* -> b)
|
||||
|
@ -63,25 +60,17 @@
|
|||
(drscheme:debug:open-and-highlight-in-file
|
||||
(list (make-srcloc src #f #f pos span))))))
|
||||
|
||||
;; Send them off to the drscheme-ui module.
|
||||
;; We'll still have to attach our instantiation of drscheme-link
|
||||
;; to the user namespace.
|
||||
(set-box! drlink:link
|
||||
(vector get-errortrace-backtrace
|
||||
show-backtrace
|
||||
show-source))
|
||||
|
||||
(define drracket-ns (namespace-anchor->namespace drracket-ns-anchor))
|
||||
|
||||
(define interactions-text-mixin
|
||||
(mixin ((class->interface drscheme:rep:text%)) ()
|
||||
(inherit get-user-namespace)
|
||||
(super-new)
|
||||
|
||||
(define/private (setup-helper-module)
|
||||
(namespace-attach-module drracket-ns
|
||||
LINK-MODULE-SPEC
|
||||
(get-user-namespace)))
|
||||
(let ([link (parameterize ((current-namespace (get-user-namespace)))
|
||||
(dynamic-require LINK-MODULE-SPEC 'link))])
|
||||
(set-box! link (vector get-errortrace-backtrace
|
||||
show-backtrace
|
||||
show-source))))
|
||||
|
||||
(define/override (reset-console)
|
||||
(super reset-console)
|
||||
|
|
Loading…
Reference in New Issue
Block a user