racket/pkgs/compiler-test/tests/compiler/test/runtime.rkt
Conor Finegan 9852afe1b1 raco test: support ++arg <arg> and ++args <args>
Add a way for `raco test` to pass along arguments to the test program.
2017-06-22 08:09:22 -06:00

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"))