diff --git a/drracket-test/tests/drracket/autosave-recovery-gui.rkt b/drracket-test/tests/drracket/autosave-recovery-gui.rkt index 2976daf37..f0cf36f55 100644 --- a/drracket-test/tests/drracket/autosave-recovery-gui.rkt +++ b/drracket-test/tests/drracket/autosave-recovery-gui.rkt @@ -1,8 +1,8 @@ #lang racket/base -(require "private/drracket-test-util.rkt" +(require framework racket/class racket/gui/base - framework) + "private/drracket-test-util.rkt") (let ([raw-autosave-contents (if (file-exists? autosave:toc-path) diff --git a/drracket-test/tests/drracket/hangman.rkt b/drracket-test/tests/drracket/hangman.rkt index 15e40a6d3..3270d2111 100644 --- a/drracket-test/tests/drracket/hangman.rkt +++ b/drracket-test/tests/drracket/hangman.rkt @@ -1,7 +1,7 @@ #lang racket/base -(require "private/drracket-test-util.rkt" - racket/class - racket/gui/base) +(require racket/class + racket/gui/base + "private/drracket-test-util.rkt") (fire-up-drracket-and-run-tests (λ () diff --git a/drracket-test/tests/drracket/insert-large-letters-test.rkt b/drracket-test/tests/drracket/insert-large-letters-test.rkt index 65aebb25f..95c999bfb 100644 --- a/drracket-test/tests/drracket/insert-large-letters-test.rkt +++ b/drracket-test/tests/drracket/insert-large-letters-test.rkt @@ -1,11 +1,11 @@ #lang racket -(require tests/drracket/private/drracket-test-util - drracket/private/local-member-names - racket/gui/base +(require drracket/private/local-member-names framework + racket/gui/base rackunit - string-constants) + string-constants + tests/drracket/private/drracket-test-util) (fire-up-drracket-and-run-tests (λ () diff --git a/drracket-test/tests/drracket/memory-log.rkt b/drracket-test/tests/drracket/memory-log.rkt index 3aa0d567f..4c2b67636 100644 --- a/drracket-test/tests/drracket/memory-log.rkt +++ b/drracket-test/tests/drracket/memory-log.rkt @@ -1,10 +1,10 @@ #lang racket/base -(require "private/drracket-test-util.rkt" - racket/gui/base - racket/class - framework/test +(require drracket/private/syncheck/local-member-names framework/preferences - drracket/private/syncheck/local-member-names) ;; for the syncheck:arrows-visible? method + framework/test + racket/class + racket/gui/base + "private/drracket-test-util.rkt") ;; for the syncheck:arrows-visible? method (printf "The printouts below are designed to trick drdr into graphing them;\n") (printf "they aren't times, but memory usage. The first is starting up DrRacket,\n") @@ -18,57 +18,47 @@ (let loop ([cmu (current-memory-use)] [n 20]) (collect-garbage) - (let ([new-cmu (current-memory-use)]) - (cond - [(or (< n 0) - (< (abs (- cmu new-cmu)) - (* 0.01 cmu))) - new-cmu] - [else - (loop new-cmu (- n 1))])))) + (define new-cmu (current-memory-use)) + (cond + [(or (< n 0) (< (abs (- cmu new-cmu)) (* 0.01 cmu))) new-cmu] + [else (loop new-cmu (- n 1))]))) (void (putenv "PLTDRPLACEPRINT" "yes")) (define (wait-and-print) - (let ([s (make-semaphore 0)]) - ;; let two rounds of pending events be handled. - (queue-callback (λ () (queue-callback (λ () (semaphore-post s)) #f)) #f) - (yield s) - - ;; print out memory use in a fake form to be tracked by drdr - (let ([n (mem-cnt)]) - (printf "cpu time: ~a real time: ~a gc time: ~a\n" - n n n)))) + (define s (make-semaphore 0)) + ;; let two rounds of pending events be handled. + (queue-callback (λ () (queue-callback (λ () (semaphore-post s)) #f)) #f) + (yield s) + + ;; print out memory use in a fake form to be tracked by drdr + (define n (mem-cnt)) + (printf "cpu time: ~a real time: ~a gc time: ~a\n" n n n)) (fire-up-drracket-and-run-tests (λ () - (let ([drs-frame (wait-for-drracket-frame)]) - - ;; initial startup memory use - (wait-and-print) - - ;; figure out the memory use after running check syntax once (and so the docs - ;; have been loaded) - (queue-callback - (λ () (send (send drs-frame get-definitions-text) insert "#lang racket/base\n+"))) - (set-module-language!) - (test:run-one (lambda () (send (send drs-frame syncheck:get-button) command))) - (wait-for-computation drs-frame) - (wait-and-print) - - ;; figure out the memory use after letting online check syntax run once - ;; (so a place has been created and the docs loaded again (in the other place - ;; this time)) - - ; clear out the check synax results from before - (queue-callback/res (λ () (send (send drs-frame get-definitions-text) insert "\n"))) - (poll-until - (λ () - (not (send (send drs-frame get-definitions-text) syncheck:arrows-visible?)))) - - ; enable online check syntax and wait for the results to appear - (queue-callback/res (λ () (preferences:set 'drracket:online-compilation-default-on #t))) - (poll-until - (λ () - (send (send drs-frame get-definitions-text) syncheck:arrows-visible?))) - (wait-and-print)))) + (define drs-frame (wait-for-drracket-frame)) + + ;; initial startup memory use + (wait-and-print) + + ;; figure out the memory use after running check syntax once (and so the docs + ;; have been loaded) + (queue-callback (λ () (send (send drs-frame get-definitions-text) insert "#lang racket/base\n+"))) + (set-module-language!) + (test:run-one (lambda () (send (send drs-frame syncheck:get-button) command))) + (wait-for-computation drs-frame) + (wait-and-print) + + ;; figure out the memory use after letting online check syntax run once + ;; (so a place has been created and the docs loaded again (in the other place + ;; this time)) + + ; clear out the check synax results from before + (queue-callback/res (λ () (send (send drs-frame get-definitions-text) insert "\n"))) + (poll-until (λ () (not (send (send drs-frame get-definitions-text) syncheck:arrows-visible?)))) + + ; enable online check syntax and wait for the results to appear + (queue-callback/res (λ () (preferences:set 'drracket:online-compilation-default-on #t))) + (poll-until (λ () (send (send drs-frame get-definitions-text) syncheck:arrows-visible?))) + (wait-and-print))) diff --git a/drracket-test/tests/drracket/repl-test-debug.rkt b/drracket-test/tests/drracket/repl-test-debug.rkt index 7e8e44e33..d2e1829ec 100644 --- a/drracket-test/tests/drracket/repl-test-debug.rkt +++ b/drracket-test/tests/drracket/repl-test-debug.rkt @@ -1,5 +1,6 @@ #lang racket/base -(require "private/repl-test.rkt" "private/drracket-test-util.rkt") +(require "private/drracket-test-util.rkt" + "private/repl-test.rkt") (fire-up-drracket-and-run-tests (λ () (run-test '(debug)))) (module+ test diff --git a/drracket-test/tests/drracket/syncheck-test.rkt b/drracket-test/tests/drracket/syncheck-test.rkt index cc9cb0bc1..c5e77f387 100644 --- a/drracket-test/tests/drracket/syncheck-test.rkt +++ b/drracket-test/tests/drracket/syncheck-test.rkt @@ -1,21 +1,21 @@ #lang racket/base - (require "private/drracket-test-util.rkt" + (require (for-syntax racket/base) drracket/private/syncheck/local-member-names drracket/syncheck-drracket-button - string-constants/string-constant - "private/gui.rkt" - racket/path + framework + mrlib/text-string-style-desc racket/class - racket/list racket/file - racket/set + racket/gui/base + racket/list + racket/path racket/port racket/pretty - racket/gui/base - framework - mrlib/text-string-style-desc - (for-syntax racket/base)) + racket/set + string-constants/string-constant + "private/drracket-test-util.rkt" + "private/gui.rkt") (provide main) @@ -37,11 +37,16 @@ (define-struct prefix-test (line input pos prefix output) #:transparent) (define-struct err-test (line input expected locations) #:transparent) - (define build-test/proc - (λ (line input expected [arrow-table '()] #:tooltips [tooltips #f] - #:setup [setup void] #:teardown [teardown void] #:extra-files [extra-files (hash)] - #:extra-info? [extra-info? #f]) - (make-test line input expected arrow-table tooltips setup teardown extra-files extra-info?))) + (define (build-test/proc line + input + expected + [arrow-table '()] + #:tooltips [tooltips #f] + #:setup [setup void] + #:teardown [teardown void] + #:extra-files [extra-files (hash)] + #:extra-info? [extra-info? #f]) + (make-test line input expected arrow-table tooltips setup teardown extra-files extra-info?)) (define-syntax (build-test stx) (syntax-case stx () @@ -1754,7 +1759,7 @@ (define (main) - (define temp-dir (normalize-path (make-temporary-file "syncheck-test~a" 'directory))) + (define temp-dir (normalize-path (make-temporary-directory "syncheck-test~a"))) (dynamic-wind void (λ () diff --git a/drracket-test/tests/drracket/teaching-lang-sharing-modules.rkt b/drracket-test/tests/drracket/teaching-lang-sharing-modules.rkt index 620314ba9..7aa5cf4c5 100644 --- a/drracket-test/tests/drracket/teaching-lang-sharing-modules.rkt +++ b/drracket-test/tests/drracket/teaching-lang-sharing-modules.rkt @@ -42,22 +42,19 @@ Of course, other (similar) things can go wrong, too. (for ([exp (in-list things-to-try)]) (insert-in-definitions drs-frame (format "~s\n" exp))) (do-execute drs-frame) - (let ([output (fetch-output drs-frame)]) - (cond - [(equal? output first-line-output) - (try-interaction-test drs-frame)] - [else - (eprintf "teaching-lang-sharing-modules.rkt: got bad output from execute: ~s" - output)]))) + (define output (fetch-output drs-frame)) + (cond + [(equal? output first-line-output) (try-interaction-test drs-frame)] + [else (eprintf "teaching-lang-sharing-modules.rkt: got bad output from execute: ~s" output)])) #:prefs '([plt:framework-pref:framework:autosaving-on? #f]))) (define (try-interaction-test drs-frame) (type-in-interactions drs-frame "1\n") (wait-for-computation drs-frame) - (let ([interactions-output (fetch-output drs-frame)]) - (unless (equal? interactions-output (format "~a\n> 1\n1" first-line-output)) - (error 'teaching-language-sharing-modules.rkt - "got bad output from interaction: ~s\n" - interactions-output)))) + (define interactions-output (fetch-output drs-frame)) + (unless (equal? interactions-output (format "~a\n> 1\n1" first-line-output)) + (error 'teaching-language-sharing-modules.rkt + "got bad output from interaction: ~s\n" + interactions-output))) (go) diff --git a/drracket-test/tests/drracket/test-engine-test.rkt b/drracket-test/tests/drracket/test-engine-test.rkt index 79753ef97..ca1f07e76 100644 --- a/drracket-test/tests/drracket/test-engine-test.rkt +++ b/drracket-test/tests/drracket/test-engine-test.rkt @@ -1,10 +1,10 @@ #lang racket -(require "private/drracket-test-util.rkt" - "private/gui.rkt" +(require framework mred - framework - (prefix-in fw: framework)) + (prefix-in fw: framework) + "private/drracket-test-util.rkt" + "private/gui.rkt") (define language (make-parameter "<>")) @@ -243,11 +243,11 @@ (common-signatures-sdp))) (define (prepare-for-test-expression) - (let ([drs (wait-for-drracket-frame)]) - (clear-definitions drs) - (set-language #t) - (sleep 1) ;; this shouldn't be neccessary.... - (do-execute drs))) + (define drs (wait-for-drracket-frame)) + (clear-definitions drs) + (set-language #t) + (sleep 1) ;; this shouldn't be neccessary.... + (do-execute drs)) ;; test-setting : (-> void) string string string -> void ;; opens the language dialog, runs `set-setting' @@ -262,15 +262,19 @@ (let ([f (test:get-active-top-level-window)]) (fw:test:button-push "OK") (wait-for-new-frame f)) - (let* ([drs (test:get-active-top-level-window)] - [interactions (send drs get-interactions-text)]) - (clear-definitions drs) - (insert-in-definitions drs expression) - (do-execute drs) - (let ([got (fetch-output/should-be-tested drs)]) - (unless (string=? result got) - (eprintf "FAILED: ~s ~s ~s test\n expected: ~s\n got: ~s\n" - (language) setting-name expression result got))))) + (define drs (test:get-active-top-level-window)) + (send drs get-interactions-text) + (clear-definitions drs) + (insert-in-definitions drs expression) + (do-execute drs) + (define got (fetch-output/should-be-tested drs)) + (unless (string=? result got) + (eprintf "FAILED: ~s ~s ~s test\n expected: ~s\n got: ~s\n" + (language) + setting-name + expression + result + got))) (define (fetch-output/should-be-tested . args) (regexp-replace (regexp @@ -297,11 +301,11 @@ ((regexp-match #rx"^Ran ([NoOneTwo0-9]+) tests?.\n([NoOneTwo0-9]+) tests? passed.\n(([NoOneTwo0-9]+) signature violations?.)?" txt) => (lambda (match) - (let-values (((_ test-count-text test-passed-count-text __ signature-violations-count-text) - (apply values match))) - (values (parse-number test-count-text) - (parse-number test-passed-count-text) - (parse-number signature-violations-count-text))))) + (define-values (_ test-count-text test-passed-count-text __ signature-violations-count-text) + (apply values match)) + (values (parse-number test-count-text) + (parse-number test-passed-count-text) + (parse-number signature-violations-count-text)))) ((regexp-match #rx"^This program must be tested!\n(([NoOneTwo0-9]+) signature violations?.)?" txt) => (lambda (match) (values 0 0 (parse-number (caddr match))))) @@ -309,23 +313,21 @@ (error 'parse-test-failure-header "bad test failure header" txt)))) (define (parse-test-failures txt) - (let-values (((test-count test-passed-count signature-violations-count) - (parse-test-failure-header txt))) - (let ((check-failures - (cond - ((regexp-match #rx"Check failures:\n(.*)" txt) - => (lambda (res) - (parse-check-failures (cadr res)))) - (else '()))) - (signature-violations - (cond - ((regexp-match #rx"Signature violations:\n(.*)" txt) - => (lambda (res) - (parse-signature-violations (cadr res)))) - (else '())))) - (values test-count test-passed-count signature-violations-count - check-failures - signature-violations)))) + (define-values (test-count test-passed-count signature-violations-count) + (parse-test-failure-header txt)) + (define check-failures + (cond + [(regexp-match #rx"Check failures:\n(.*)" txt) + => + (lambda (res) (parse-check-failures (cadr res)))] + [else '()])) + (define signature-violations + (cond + [(regexp-match #rx"Signature violations:\n(.*)" txt) + => + (lambda (res) (parse-signature-violations (cadr res)))] + [else '()])) + (values test-count test-passed-count signature-violations-count check-failures signature-violations)) (define-struct check-expect-failure (actual expected line column) @@ -431,34 +433,48 @@ (expected got)]))] [check-failures (lambda (where signature-violations-expected check-failures-expected) - (let ((text - (cond - ((send (send definitions-text get-tab) get-test-editor) - => (lambda (test-editor) - (let ((text (send test-editor get-text 0 'eof #t))) - (if (string=? text "") - #f - text)))) - (else #f)))) - - (cond - ((and (null? signature-violations-expected) - (null? check-failures-expected)) - (when text - (eprintf "FAILED: ~s ~s expected ~s to produce no check failures or signature violations:\ngot:\n~a\ninstead\n" - where (language) expression text))) - (text - (let-values (((test-count test-passed-count signature-violation-count check-failures signature-violations) - (parse-test-failures text))) - (when (not (equal? check-failures check-failures-expected)) - (eprintf "FAILED: ~s ~s expected ~s to produce check failures:\n~s\ngot:\n~s\ninstead\n" - where (language) expression check-failures-expected check-failures)) - (when (not (equal? signature-violations signature-violations-expected)) - (eprintf "FAILED: ~s ~s expected ~s to produce signature violations:\n~s\ngot:\n~s\ninstead\n" - where (language) expression signature-violations-expected signature-violations)))) - (else - (eprintf "expected ~a check failures and ~a signature violations but got none" - (length check-failures-expected) (length signature-violations-expected))))))] + (define text + (cond + [(send (send definitions-text get-tab) get-test-editor) + => + (lambda (test-editor) + (let ([text (send test-editor get-text 0 'eof #t)]) (if (string=? text "") #f text)))] + [else #f])) + + (cond + [(and (null? signature-violations-expected) (null? check-failures-expected)) + (when text + (eprintf + "FAILED: ~s ~s expected ~s to produce no check failures or signature violations:\ngot:\n~a\ninstead\n" + where + (language) + expression + text))] + [text + (let-values ([(test-count test-passed-count + signature-violation-count + check-failures + signature-violations) + (parse-test-failures text)]) + (when (not (equal? check-failures check-failures-expected)) + (eprintf "FAILED: ~s ~s expected ~s to produce check failures:\n~s\ngot:\n~s\ninstead\n" + where + (language) + expression + check-failures-expected + check-failures)) + (when (not (equal? signature-violations signature-violations-expected)) + (eprintf + "FAILED: ~s ~s expected ~s to produce signature violations:\n~s\ngot:\n~s\ninstead\n" + where + (language) + expression + signature-violations-expected + signature-violations)))] + [else + (eprintf "expected ~a check failures and ~a signature violations but got none" + (length check-failures-expected) + (length signature-violations-expected))]))] [make-err-msg (lambda (expected) @@ -498,20 +514,18 @@ (let ([last-para (queue-callback/res (lambda () (send interactions-text last-paragraph)))]) (alt-return-in-interactions drs) (wait-for-computation drs) - (let ([got - (fetch-output - drs - (queue-callback/res - (λ () - (send interactions-text paragraph-start-position (+ last-para 1)))) - (queue-callback/res - (λ () - (send interactions-text paragraph-end-position - (- (send interactions-text last-paragraph) 1)))))]) - (when (regexp-match re:out-of-sync got) - (error 'test-expression "got out of sync message")) - (unless (check-expectation repl-expected got) - (eprintf (make-err-msg repl-expected) 'interactions (language) expression repl-expected got)))) + (define got + (fetch-output + drs + (queue-callback/res (λ () (send interactions-text paragraph-start-position (+ last-para 1)))) + (queue-callback/res (λ () + (send interactions-text + paragraph-end-position + (- (send interactions-text last-paragraph) 1)))))) + (when (regexp-match re:out-of-sync got) + (error 'test-expression "got out of sync message")) + (unless (check-expectation repl-expected got) + (eprintf (make-err-msg repl-expected) 'interactions (language) expression repl-expected got))) ;; the failures from the definition window stick around (check-failures 'interactions