diff --git a/collects/tests/drracket/leaky-frame.rkt b/collects/tests/drracket/leaky-frame.rkt new file mode 100644 index 0000000000..e208572bd0 --- /dev/null +++ b/collects/tests/drracket/leaky-frame.rkt @@ -0,0 +1,23 @@ +#lang racket +(require "drracket-test-util.rkt" + framework) + +(parameterize ([current-command-line-arguments '#()]) + (fire-up-drscheme-and-run-tests + (λ () + (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))) + (sync (system-idle-evt)) + (test:menu-select "File" "Close") + (sync (system-idle-evt)) + (let loop ([n 30]) + (cond + [(zero? n) + (when (weak-box-value drs-frame2b) + (fprintf (current-error-port) "leak!\n"))] + [else + (collect-garbage) + (when (weak-box-value drs-frame2b) + (loop (- n 1)))])))))