48 lines
1.7 KiB
Scheme
48 lines
1.7 KiB
Scheme
;; Works for Linux, Mac OS X.
|
|
;; Assumes 3m
|
|
|
|
(load-relative "loadtest.ss")
|
|
|
|
(Section 'embed-in-c)
|
|
|
|
(require scheme/system
|
|
setup/dirs)
|
|
|
|
(define dir (collection-path "tests" "mzscheme"))
|
|
(define lib-dir (find-lib-dir))
|
|
|
|
(parameterize ([current-directory dir])
|
|
(test #t system (format "cc -c -o embed-in-c.o -DMZ_COLLECTION_PATH='\"~a\"' -I\"~a\" -DMZ_PRECISE_GC embed-in-c.c"
|
|
(find-collects-dir)
|
|
(find-include-dir)))
|
|
|
|
(test #t system (format "cc -o embed-in-c embed-in-c.o -lm -ldl ~a"
|
|
(case (system-type 'link)
|
|
[(framework)
|
|
(format "-F\"~a\" -framework PLT_MzScheme" lib-dir)]
|
|
[(static shared)
|
|
(format "-L\"~a\" -lmzscheme3m" lib-dir)]
|
|
[else
|
|
(error "unsupported")])))
|
|
|
|
(let ([o (open-output-bytes)]
|
|
[e (open-output-bytes)])
|
|
(test #t
|
|
(lambda (s)
|
|
(parameterize ([current-input-port (open-input-bytes #"5\n(log-error \"ouch!\")")]
|
|
[current-output-port o]
|
|
[current-error-port e])
|
|
(system s)))
|
|
(format "~a./embed-in-c 1 2 3"
|
|
(case (system-type 'link)
|
|
[(framework)
|
|
(format "env DYLD_FRAMEWORK_PATH=\"~a\" " lib-dir)]
|
|
[else ""])))
|
|
(test #"ouch!\n" get-output-bytes e)
|
|
(test #"1\n2\n3\n> 5\n> > " get-output-bytes o))
|
|
|
|
(let ([maybe-delete-file
|
|
(lambda (f) (when (file-exists? f) (delete-file f)))])
|
|
(maybe-delete-file "embed-in-c.o")
|
|
(maybe-delete-file "embed-in-c")))
|