racket/pkgs/racket-test/tests/pkg/test.rkt
2016-02-16 15:06:07 -05:00

79 lines
1.8 KiB
Racket

#lang racket/base
(require (for-syntax racket/base)
"shelly.rkt"
"util.rkt"
racket/port)
;; By making these syntax-time includes, it made it so they would be
;; rebuilt and register as real dependencies.
(define-syntax (run-tests stx)
(syntax-case stx ()
[(_ f ...)
(with-syntax
([(tests-f ...)
(for/list ([f-stx (in-list (syntax->list #'(f ...)))])
(define f (syntax->datum f-stx))
(format "tests-~a.rkt" f))])
(syntax/loc stx
(let ([succesful 0])
(run-tests*
(list (let ()
(local-require (only-in tests-f run-pkg-tests))
(λ ()
(printf "starting ~a\n" 'tests-f)
(run-pkg-tests)
(set! succesful (add1 succesful))))
...))
(unless (= succesful (length '(f ...)))
(exit 1)))))]))
(define (run-tests* l)
(run-pkg-tests*
(λ ()
(shelly-case "All tests"
(for-each (λ (x) (x)) l)))))
(define (go)
(run-tests
"name"
"basic" "create" "install" "permissions"
"conflicts" "checksums"
"deps" "update" "implies"
"remove"
"promote"
"locking"
"overwrite"
"config"
"clone"
"catalog-links"
"network"
"planet"
"main-server"
"update-deps"
"update-auto"
"scope"
"trash"
"migrate"
"versions"
"platform"
"raco"
"binary"
"catalogs"
"failure"))
(module+ test
(module config info
(define timeout 2400))
(go))
(module+ main
(require racket/cmdline)
(define quiet? #f)
(command-line
#:once-each
["-q" "run quietly" (set! quiet? #t)]
#:args ()
(parameterize ([verbose? (not quiet?)]) (go))))