racket/collects/tests/drracket/teaching-lang-executable-creation.rkt

36 lines
1.3 KiB
Racket

#lang racket/base
(require lang/private/create-htdp-executable
racket/file
racket/system)
(define tmpfile (make-temporary-file "executable-creation-test~a"))
(create-htdp-lang-executable (collection-file-path
"image-and-comment-box.rkt"
"tests"
"drracket")
tmpfile
'(lib "htdp-beginner-reader.ss" "lang"))
(define sp (open-output-string))
(define res
(let/ec k
(parameterize ([error-escape-handler (λ () (k #f))])
(parameterize ([current-output-port sp]
[current-error-port sp]
[current-input-port (open-input-string "")])
(case (system-type)
[(macosx)
(define-values (base name dir) (split-path tmpfile))
(system
(path->string
(build-path tmpfile "Contents" "MacOS" name)))]
[(unix)
(system (path->string tmpfile))]
[(windows)
(error 'teaching-lang-executable-creation.rkt "test not supported")])))))
(delete-directory/files tmpfile)
(define expected "1\n")
(unless (and res (equal? (get-output-string sp) expected))
(eprintf "TEST FAILED; res ~s\n~a\n" res (get-output-string sp)))