Use with-logging-to-port from unstable.
This commit is contained in:
parent
47f48c08ad
commit
09015722e3
|
@ -1,41 +1,11 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
(require racket/runtime-path
|
(require racket/runtime-path
|
||||||
rackunit rackunit/text-ui)
|
rackunit rackunit/text-ui
|
||||||
|
unstable/logging)
|
||||||
|
|
||||||
(provide optimization-tests missed-optimization-tests
|
(provide optimization-tests missed-optimization-tests
|
||||||
test-opt test-missed-optimization)
|
test-opt test-missed-optimization)
|
||||||
|
|
||||||
(define (with-logging-to-port port level proc)
|
|
||||||
(let* ([logger (make-logger #f (current-logger))]
|
|
||||||
[receiver (make-log-receiver logger level)]
|
|
||||||
[stop-chan (make-channel)]
|
|
||||||
[t (thread (lambda ()
|
|
||||||
(define (output-event l)
|
|
||||||
(displayln (vector-ref l 1) ; actual message
|
|
||||||
port))
|
|
||||||
(define (clear-events)
|
|
||||||
(let ([l (sync/timeout 0 receiver)])
|
|
||||||
(when l ; still something to read
|
|
||||||
(output-event l)
|
|
||||||
(clear-events))))
|
|
||||||
(let loop ()
|
|
||||||
(let ([l (sync receiver stop-chan)])
|
|
||||||
(cond [(eq? l 'stop)
|
|
||||||
;; we received all the events we were supposed
|
|
||||||
;; to get, read them all (w/o waiting), then
|
|
||||||
;; stop
|
|
||||||
(clear-events)]
|
|
||||||
[else ; keep going
|
|
||||||
(output-event l)
|
|
||||||
(loop)])))))])
|
|
||||||
(begin0
|
|
||||||
(parameterize ([current-logger logger])
|
|
||||||
(proc))
|
|
||||||
(channel-put stop-chan 'stop) ; stop the receiver thread
|
|
||||||
(thread-wait t))))
|
|
||||||
;; TODO put in unstable somewhere
|
|
||||||
|
|
||||||
|
|
||||||
(define (generate-log name dir)
|
(define (generate-log name dir)
|
||||||
;; some tests require other tests, so some fiddling is required
|
;; some tests require other tests, so some fiddling is required
|
||||||
(let* ([log-port (open-output-string)]
|
(let* ([log-port (open-output-string)]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user