From 723ad6207c091a742381a2cd0d8e7298884271f6 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 22 Apr 2012 08:51:23 -0500 Subject: [PATCH] add opening a file (and (hopefully) waiting for the coloring to finish) and run the test three times, instead of just once --- .../drracket/no-write-and-frame-leak.rkt | 81 ++++++++++--------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/collects/tests/drracket/no-write-and-frame-leak.rkt b/collects/tests/drracket/no-write-and-frame-leak.rkt index b809741b12..2f7f231775 100644 --- a/collects/tests/drracket/no-write-and-frame-leak.rkt +++ b/collects/tests/drracket/no-write-and-frame-leak.rkt @@ -17,40 +17,47 @@ (define drs-frame1 (wait-for-drracket-frame)) (sync (system-idle-evt)) - (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" (if (eq? (system-type) 'unix) "Close" "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" (if (eq? (system-type) 'unix) "Close" "Close Window")) - (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) "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 (ormap weak-box-value - (list drs-tabb - tab-nsb - drs-frame2b - frame2-nsb)) - (loop (- n 1)))]))))) + (for ([tries (in-range 3)]) + (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" (if (eq? (system-type) 'unix) "Close" "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))) + + (queue-callback/res + (λ () (send (send (send (weak-box-value drs-frame2b) get-current-tab) get-defs) load-file + (collection-file-path "unit.rkt" "drracket" "private")))) + (sleep 2) + (sync (system-idle-evt)) + + (test:menu-select "File" (if (eq? (system-type) 'unix) "Close" "Close Window")) + (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) "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) (sync (system-idle-evt)) + (when (ormap weak-box-value + (list drs-tabb + tab-nsb + drs-frame2b + frame2-nsb)) + (loop (- n 1)))]))))))