
The "props" file still has * ".rkt" `drdr:timeout` entries, needed until DrDr uses submodules and "info.rkt" files; although timeout information has been put in submodules for `raco test`, DrDr uses `raco test` in a way that does not enable timeouts, so that DrDr can implement timeouts itself (and record when a test times out) * ".rkt" `drdr:random #t` entries; not sure what to do with these, yet * ".rkt" `responsible` entries; not sure what to do with these, yet * ".rktl" `drdr:command-line #f` entries, needed until all ".rktl" files are disabled in DrDr The following files were previously disabled for DrDr testing, but were intentionally left as enabled with these changes: pkgs/racket-pkgs/racket-test/tests/pkg/shelly.rkt pkgs/racket-pkgs/racket-test/tests/pkg/util.rkt pkgs/racket-pkgs/racket-test/tests/pkg/info.rkt pkgs/racket-pkgs/racket-test/tests/pkg/basic-index.rkt pkgs/racket-pkgs/racket-test/tests/racket/link.rkt pkgs/racket-pkgs/racket-test/tests/racket/embed-in-c.rkt pkgs/racket-pkgs/racket-doc/ffi/examples/use-c-printf.rkt pkgs/racket-pkgs/racket-doc/ffi/examples/c-printf.rkt pkgs/parser-tools-pkgs/parser-tools-lib/parser-tools/private-lex/error-tests.rkt pkgs/mysterx/mysterx.rkt pkgs/mysterx/main.rkt pkgs/games/gobblet/test-model.rkt pkgs/games/gobblet/test-explore.rkt pkgs/games/gobblet/robot.rkt pkgs/games/gobblet/check.rkt pkgs/db-pkgs/db-lib/db/private/odbc/main.rkt pkgs/db-pkgs/db-lib/db/private/odbc/ffi.rkt pkgs/db-pkgs/db-lib/db/private/odbc/dbsystem.rkt pkgs/db-pkgs/db-lib/db/private/odbc/connection.rkt pkgs/distributed-places-pkgs/distributed-places-lib/racket/place/distributed/examples/hello-world.rkt pkgs/redex-pkgs/redex-lib/redex/private/compiler/match.rkt pkgs/redex-pkgs/redex-lib/redex/private/compiler/match.rkt pkgs/htdp-pkgs/htdp-test/2htdp/utest/balls.rkt pkgs/gui-pkgs/gui-test/framework/tests/test-suite-utils.rkt pkgs/games/paint-by-numbers/raw-problems/size-calculation.rkt pkgs/db-pkgs/db-lib/db/odbc.rkt pkgs/compatibility-pkgs/compatibility-lib/mzlib/traceld.rkt pkgs/cext-lib/dynext/private/stdio.rkt pkgs/db-pkgs/db-lib/db/odbc.rkt racket/collects/ffi/unsafe/objc.rkt racket/collects/ffi/objc.rkt pkgs/racket-pkgs/racket-test/tests/pkg/tests-db.rkt pkgs/racket-pkgs/racket-test/tests/pkg/test-docs.rkt pkgs/racket-pkgs/racket-test/tests/pkg/test-catalogs-api.rkt pkgs/gui-pkg-manager-pkgs/gui-pkg-manager-lib/pkg/gui/main.rkt pkgs/redex-pkgs/redex-lib/redex/private/compiler/redextomatrix.rkt pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/base-special-env.rkt pkgs/planet-pkgs/planet-test/tests/planet/version.rkt pkgs/planet-pkgs/planet-test/tests/planet/test-docs-complete.rkt pkgs/planet-pkgs/planet-test/tests/planet/lang.rkt pkgs/planet-pkgs/planet-test/tests/planet/docs-build.rkt pkgs/drracket-pkgs/drracket-test/tests/drracket/follow-log.rkt pkgs/drracket-pkgs/drracket/drracket/private/dock-icon.rkt pkgs/drracket-pkgs/drracket-test/tests/drracket/tool-lib-and-sig.rkt
117 lines
4.4 KiB
Racket
117 lines
4.4 KiB
Racket
#lang scheme/base
|
|
(require scheme/cmdline
|
|
raco/command-name
|
|
compiler/cm
|
|
compiler/compiler
|
|
dynext/file
|
|
setup/parallel-build
|
|
racket/match)
|
|
|
|
(module test racket/base)
|
|
|
|
(define verbose (make-parameter #f))
|
|
(define very-verbose (make-parameter #f))
|
|
(define disable-inlining (make-parameter #f))
|
|
|
|
(define disable-deps (make-parameter #f))
|
|
(define disable-const (make-parameter #f))
|
|
(define prefixes (make-parameter null))
|
|
(define assume-primitives (make-parameter #t))
|
|
(define worker-count (make-parameter 1))
|
|
|
|
(define mzc-symbol (string->symbol (short-program+command-name)))
|
|
|
|
(define source-files
|
|
(command-line
|
|
#:program (short-program+command-name)
|
|
#:once-each
|
|
[("-j") n "Compile with up to <n> tasks in parallel"
|
|
(let ([num (string->number n)])
|
|
(unless num (raise-user-error (format "~a: bad count for -j: ~s"
|
|
(short-program+command-name)
|
|
n)))
|
|
(worker-count num))]
|
|
[("--disable-inline") "Disable procedure inlining during compilation"
|
|
(disable-inlining #t)]
|
|
[("--disable-constant") "Disable enforcement of module constants"
|
|
(disable-const #t)]
|
|
[("--no-deps") "Compile immediate files without updating dependencies"
|
|
(disable-deps #t)]
|
|
[("-p" "--prefix") file "Add elaboration-time prefix file for --no-deps"
|
|
(prefixes (append (prefixes) (list file)))]
|
|
[("--no-prim") "Do not assume `scheme' bindings at top level for --no-deps"
|
|
(assume-primitives #f)]
|
|
[("-v") "Verbose mode"
|
|
(verbose #t)]
|
|
[("--vv") "Very verbose mode"
|
|
(verbose #t)
|
|
(very-verbose #t)]
|
|
#:args (file . another-file) (cons file another-file)))
|
|
|
|
(cond
|
|
;; Just compile one file:
|
|
[(disable-deps)
|
|
(let ([prefix
|
|
`(begin
|
|
(require scheme)
|
|
,(if (assume-primitives)
|
|
'(void)
|
|
'(namespace-require/copy 'scheme))
|
|
,@(map (lambda (s) `(load ,s)) (prefixes))
|
|
(void))])
|
|
((compile-zos prefix #:verbose? (verbose))
|
|
source-files
|
|
'auto))]
|
|
;; Normal make:
|
|
[(= (worker-count) 1)
|
|
(let ([n (make-base-empty-namespace)]
|
|
[did-one? #f])
|
|
(parameterize ([current-namespace n]
|
|
[manager-trace-handler
|
|
(lambda (p)
|
|
(when (very-verbose)
|
|
(printf " ~a\n" p)))]
|
|
[manager-compile-notify-handler
|
|
(lambda (p)
|
|
(set! did-one? #t)
|
|
(when (verbose)
|
|
(printf " making ~s\n" p)))])
|
|
(for ([file source-files])
|
|
(unless (file-exists? file)
|
|
(error mzc-symbol "file does not exist: ~a" file))
|
|
(set! did-one? #f)
|
|
(let ([name (extract-base-filename/ss file mzc-symbol)])
|
|
(when (verbose)
|
|
(printf "\"~a\":\n" file))
|
|
(parameterize ([compile-context-preservation-enabled
|
|
(disable-inlining)]
|
|
[compile-enforce-module-constants
|
|
(not (disable-const))])
|
|
(managed-compile-zo file))
|
|
(let ([dest (append-zo-suffix
|
|
(let-values ([(base name dir?) (split-path file)])
|
|
(build-path (if (symbol? base) 'same base)
|
|
"compiled" name)))])
|
|
(when (verbose)
|
|
(printf " [~a \"~a\"]\n"
|
|
(if did-one? "output to" "already up-to-date at")
|
|
dest)))))))]
|
|
;; Parallel make:
|
|
[else
|
|
(parallel-compile-files
|
|
source-files
|
|
#:worker-count (worker-count)
|
|
#:handler (lambda (type work msg out err)
|
|
(match type
|
|
['done (when (verbose) (printf " Made ~a\n" work))]
|
|
['output (printf " Output from: ~a\n~a~a" work out err)]
|
|
[else (printf " Error compiling ~a\n~a\n~a~a" work msg out err)]))
|
|
#:options (let ([cons-if-true (lambda (bool carv cdrv)
|
|
(if bool
|
|
(cons carv cdrv)
|
|
cdrv))])
|
|
(cons-if-true
|
|
(very-verbose)
|
|
'very-verbose
|
|
(cons-if-true (disable-inlining) 'disable-inlining null))))])
|