35 lines
1.0 KiB
Racket
35 lines
1.0 KiB
Racket
#lang racket/base
|
|
(require racket/system
|
|
compiler/find-exe)
|
|
|
|
(define exe (find-exe))
|
|
|
|
(define (try mode mod expect . extra-args)
|
|
(printf "trying ~s ~s\n" mod mode)
|
|
(define s (open-output-bytes))
|
|
(parameterize ([current-output-port s])
|
|
(apply system* exe "-l-" "raco" "test"
|
|
mode (append extra-args (list "-l" (string-append "tests/compiler/test/" mod)))))
|
|
(define last-line
|
|
(for/fold ([prev #f]) ([s (in-lines (open-input-bytes (get-output-bytes s)))])
|
|
(if (or (eof-object? s)
|
|
(equal? s "1 test passed"))
|
|
prev
|
|
s)))
|
|
(unless (equal? expect last-line)
|
|
(error 'runtime "test failed\n module: ~s~a\n expected: ~s\n got: ~s"
|
|
mod
|
|
(if (null? extra-args) "" (format "\n extra args: ~s" extra-args))
|
|
expect
|
|
last-line)))
|
|
|
|
(for ([mod '("--direct" "--place" "--process")])
|
|
(try mod "racket.rkt" "'(1 2)")
|
|
(try mod "scheme.rkt" "(1 2)")
|
|
(try mod "args.rkt" "1" "-q" "++arg" "1")
|
|
(try mod "args.rkt" "1" "-q" "-s" "multi-test" "++args" "1 2"))
|
|
|
|
|
|
|
|
|