Re-instate Robby's hack to display test results off REPL errors.
... and generalize it so there's an action before (clearing the old tests out) in addition to after (displaying the test results). Also, do for DMdA as for HtDP.
This commit is contained in:
parent
02cde446cc
commit
9b1188c77a
|
@ -767,12 +767,27 @@
|
||||||
(drscheme:rep:current-rep)
|
(drscheme:rep:current-rep)
|
||||||
'#%deinprogramm))
|
'#%deinprogramm))
|
||||||
|
|
||||||
;; DeinProgramm addition: needed for test boxes; see the code
|
|
||||||
;; in collects/drscheme/private/language.ss
|
|
||||||
(define/override (front-end/interaction port settings)
|
(define/override (front-end/interaction port settings)
|
||||||
(let ((reader (get-reader)))
|
(let ([reader (get-reader)] ;; DeinProgramm addition:
|
||||||
(lambda ()
|
;; needed for test boxes; see
|
||||||
(reader (object-name port) port))))
|
;; the code in
|
||||||
|
;; collects/drscheme/private/language.ss
|
||||||
|
[start? #t]
|
||||||
|
[done? #f])
|
||||||
|
(λ ()
|
||||||
|
(cond
|
||||||
|
[start?
|
||||||
|
(set! start? #f)
|
||||||
|
#'(reset-tests)]
|
||||||
|
[done? eof]
|
||||||
|
[else
|
||||||
|
(let ([ans (reader (object-name port) port)])
|
||||||
|
(cond
|
||||||
|
[(eof-object? ans)
|
||||||
|
(set! done? #t)
|
||||||
|
#`(test)]
|
||||||
|
[else
|
||||||
|
ans]))]))))
|
||||||
|
|
||||||
(define/augment (capability-value key)
|
(define/augment (capability-value key)
|
||||||
(case key
|
(case key
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
compiler/embed
|
compiler/embed
|
||||||
wxme/wxme
|
wxme/wxme
|
||||||
setup/dirs
|
setup/dirs
|
||||||
|
test-engine/racket-tests
|
||||||
|
|
||||||
;; this module is shared between the drscheme's namespace (so loaded here)
|
;; this module is shared between the drscheme's namespace (so loaded here)
|
||||||
;; and the user's namespace in the teaching languages
|
;; and the user's namespace in the teaching languages
|
||||||
|
@ -554,6 +555,26 @@
|
||||||
(htdp-lang-settings-teachpacks settings)
|
(htdp-lang-settings-teachpacks settings)
|
||||||
(drscheme:rep:current-rep)))
|
(drscheme:rep:current-rep)))
|
||||||
|
|
||||||
|
(define/override (front-end/interaction port settings)
|
||||||
|
(let ([t (super front-end/interaction port settings)]
|
||||||
|
[start? #t]
|
||||||
|
[done? #f])
|
||||||
|
(λ ()
|
||||||
|
(cond
|
||||||
|
[start?
|
||||||
|
(set! start? #f)
|
||||||
|
#'(reset-tests)]
|
||||||
|
[done? eof]
|
||||||
|
[else
|
||||||
|
(let ([ans (t)])
|
||||||
|
(cond
|
||||||
|
[(eof-object? ans)
|
||||||
|
(set! done? #t)
|
||||||
|
#`(test)]
|
||||||
|
[else
|
||||||
|
ans]))]))))
|
||||||
|
|
||||||
|
|
||||||
(define keywords #f)
|
(define keywords #f)
|
||||||
(define/augment (capability-value key)
|
(define/augment (capability-value key)
|
||||||
(case key
|
(case key
|
||||||
|
|
|
@ -110,12 +110,9 @@
|
||||||
skipto/cdr skipto/third ;; application of insert-test
|
skipto/cdr skipto/third ;; application of insert-test
|
||||||
'(syntax-e cdr cdr syntax-e car) ;; lambda
|
'(syntax-e cdr cdr syntax-e car) ;; lambda
|
||||||
)))
|
)))
|
||||||
#`(begin
|
#`(let ([test-engine (namespace-variable-value
|
||||||
(let ([test-engine (namespace-variable-value
|
|
||||||
'test~object #f builder (current-namespace))])
|
'test~object #f builder (current-namespace))])
|
||||||
(when test-engine
|
(when test-engine
|
||||||
(begin
|
|
||||||
(send test-engine reset-info)
|
|
||||||
(insert-test test-engine
|
(insert-test test-engine
|
||||||
(lambda ()
|
(lambda ()
|
||||||
#,(with-stepper-syntax-properties
|
#,(with-stepper-syntax-properties
|
||||||
|
@ -137,8 +134,7 @@
|
||||||
#,(with-stepper-syntax-properties
|
#,(with-stepper-syntax-properties
|
||||||
(['stepper-no-lifting-info #t]
|
(['stepper-no-lifting-info #t]
|
||||||
['stepper-hide-reduction #t])
|
['stepper-hide-reduction #t])
|
||||||
#'test-engine)))))))))
|
#'test-engine))))))))))
|
||||||
(test))))
|
|
||||||
|
|
||||||
(define-for-syntax (check-context?)
|
(define-for-syntax (check-context?)
|
||||||
(let ([c (syntax-local-context)])
|
(let ([c (syntax-local-context)])
|
||||||
|
@ -302,6 +298,12 @@
|
||||||
[else
|
[else
|
||||||
#t])))
|
#t])))
|
||||||
|
|
||||||
|
(define (reset-tests)
|
||||||
|
(let ([test-engine (namespace-variable-value
|
||||||
|
'test~object #f builder (current-namespace))])
|
||||||
|
(when test-engine
|
||||||
|
(send test-engine reset-info))))
|
||||||
|
|
||||||
(define (builder)
|
(define (builder)
|
||||||
(let ([te (build-test-engine)])
|
(let ([te (build-test-engine)])
|
||||||
(namespace-set-variable-value! 'test~object te (current-namespace))
|
(namespace-set-variable-value! 'test~object te (current-namespace))
|
||||||
|
@ -348,7 +350,7 @@
|
||||||
#'(display-results*)
|
#'(display-results*)
|
||||||
'test-call #t)]))
|
'test-call #t)]))
|
||||||
|
|
||||||
(provide run-tests display-results test builder)
|
(provide run-tests display-results test builder reset-tests)
|
||||||
|
|
||||||
(define (build-test-engine)
|
(define (build-test-engine)
|
||||||
(let ([engine (make-object scheme-test%)])
|
(let ([engine (make-object scheme-test%)])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user