diff --git a/cover/cover.rkt b/cover/cover.rkt index 9373adf..91a9f55 100644 --- a/cover/cover.rkt +++ b/cover/cover.rkt @@ -70,7 +70,9 @@ Thus, In essence this module has three responsibilites: ;; Test files and build coverage map ;; returns true if no tests reported as failed, and no files errored. -(define (test-files! #:submod [submod-name 'test] #:env [env (current-cover-environment)] . files) +(define (test-files! #:submod [submod-name 'test] #:env [env (current-cover-environment)] + #:dont-compile [dont-compile null] + . files) (parameterize ([current-cover-environment env]) (define abs (for/list ([p (in-list files)]) @@ -82,15 +84,18 @@ Thus, In essence this module has three responsibilites: (match p [(cons p _) p] [_ p]))) + (define excludes (map ->absolute dont-compile)) (define cover-load/use-compiled (make-cover-load/use-compiled abs-names)) (define tests-failed (parameterize* ([current-load/use-compiled cover-load/use-compiled] [current-namespace (get-namespace)]) (with-cover-loggers - (for ([f (in-list abs-names)]) - (vprintf "forcing compilation of ~a" f) + (for ([f (in-list abs-names)] + #:unless (member f excludes)) + (printf "cover: instrumenting: ~a\n" f) (compile-file f)) (for/fold ([tests-failed #f]) ([f (in-list abs)]) + (printf "cover: running file: ~a\n" f) (define failed? (handle-file f submod-name)) (or failed? tests-failed))))) (vprintf "ran ~s\n" files) diff --git a/cover/main.rkt b/cover/main.rkt index ec1e621..de4f6be 100644 --- a/cover/main.rkt +++ b/cover/main.rkt @@ -11,7 +11,8 @@ [coverage/c contract?] [test-files! (->* () (#:submod symbol? - #:env environment?) + #:env environment? + #:dont-compile (listof path-string?)) #:rest (listof (or/c path-string? (list/c path-string? diff --git a/cover/raco.rkt b/cover/raco.rkt index 005c2b3..aaedb09 100644 --- a/cover/raco.rkt +++ b/cover/raco.rkt @@ -94,8 +94,10 @@ (define generate-coverage (hash-ref (get-formats) output-format (lambda _ (error 'cover "given unknown coverage output format: ~s" output-format)))) - (printf "generating test coverage for ~s\n" cleaned-files) - (define passed (apply test-files! #:submod submod files)) + (define passed (apply test-files! + #:submod submod + #:dont-compile exclude-paths + files)) (define coverage (get-test-coverage)) (printf "dumping coverage info into ~s\n" coverage-dir) (parameterize ([irrelevant-submodules irrel-submods])