improve the leak test a little by looking to see tabs get gc'd and so do the user's namespaces.

This commit is contained in:
Robby Findler 2010-11-28 19:26:38 -06:00
parent 62f3d7e254
commit eabbb7dff2

View File

@ -7,17 +7,41 @@
(λ ()
(define drs-frame1 (wait-for-drscheme-frame))
(sync (system-idle-evt))
(test:menu-select "File" "New")
(define drs-frame2b (make-weak-box (wait-for-new-frame drs-frame1)))
(test:menu-select "File" "New Tab")
(sync (system-idle-evt))
(define drs-tabb (make-weak-box (send drs-frame1 get-current-tab)))
(define tab-nsb (make-weak-box (send (send (send drs-frame1 get-current-tab) get-ints) get-user-namespace)))
(test:menu-select "File" "Close Tab")
(sync (system-idle-evt))
(test:menu-select "File" "New")
(sync (system-idle-evt))
(define drs-frame2b (make-weak-box (wait-for-new-frame drs-frame1)))
(define frame2-nsb (make-weak-box (send (send (send (weak-box-value drs-frame2b) get-current-tab) get-ints) get-user-namespace)))
(test:menu-select "File" "Close")
(sync (system-idle-evt))
(let loop ([n 30])
(cond
[(zero? n)
(when (weak-box-value drs-tabb)
(fprintf (current-error-port) "frame leak!\n"))
(when (weak-box-value drs-frame2b)
(fprintf (current-error-port) "leak!\n"))]
(fprintf (current-error-port) "tab leak!\n"))
(when (weak-box-value tab-nsb)
(fprintf (current-error-port) "tab namespace leak!\n"))
(when (weak-box-value frame2-nsb)
(fprintf (current-error-port) "frame namespace leak!\n"))]
[else
(collect-garbage)
(when (weak-box-value drs-frame2b)
(when (ormap weak-box-value
(list drs-tabb
tab-nsb
drs-frame2b
frame2-nsb))
(loop (- n 1)))])))))