diff --git a/.travis.yml b/.travis.yml index 1862950..0e1143f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,5 +8,5 @@ before_install: script: - /usr/racket/bin/raco pkg install $TRAVIS_BUILD_DIR - - /usr/racket/bin/raco test $TRAVIS_BUILD_DIR + - /usr/racket/bin/raco test -Q $TRAVIS_BUILD_DIR - /usr/racket/bin/raco cover -c coveralls -d $TRAVIS_BUILD_DIR/coverage -p $TRAVIS_BUILD_DIR diff --git a/cover.rkt b/cover.rkt index ab26384..0a8cb82 100644 --- a/cover.rkt +++ b/cover.rkt @@ -9,6 +9,7 @@ unstable/syntax racket/runtime-path rackunit + unstable/error "private/shared.rkt") @@ -40,17 +41,20 @@ (for ([p paths]) (vprintf "running file: ~s\n" p) (define old-check (current-check-handler)) - (parameterize* ([current-namespace ns] - [current-check-handler - (lambda x - (set! tests-failed #t) - (vprintf "file ~s had failed tests\n" p) - (apply old-check x))]) - (eval `(dynamic-require '(file ,p) #f)) - (namespace-require `(file ,p)) - (define submod `(submod (file ,p) test)) - (when (module-declared? submod) - (namespace-require submod)))) + (with-handlers ([void (lambda (x) + (set! tests-failed #t) + (error-display x))]) + (parameterize* ([current-namespace ns] + [current-check-handler + (lambda x + (set! tests-failed #t) + (vprintf "file ~s had failed tests\n" p) + (apply old-check x))]) + (eval `(dynamic-require '(file ,p) #f)) + (namespace-require `(file ,p)) + (define submod `(submod (file ,p) test)) + (when (module-declared? submod) + (namespace-require submod))))) (not tests-failed))) (define (make-better-test-compile) diff --git a/info.rkt b/info.rkt index 0897a27..a5346f6 100644 --- a/info.rkt +++ b/info.rkt @@ -10,3 +10,5 @@ '(("cover" (submod cover/raco main) "a code coverage tool" 30))) (define scribblings '(("scribblings/cover.scrbl" (multi-page)))) + +(define test-omit-paths (list "tests/error-file.rkt")) diff --git a/tests/error-file.rkt b/tests/error-file.rkt new file mode 100644 index 0000000..0b8c281 --- /dev/null +++ b/tests/error-file.rkt @@ -0,0 +1,2 @@ +#lang racket +(error "this is supposed to happend") diff --git a/tests/error.rkt b/tests/error.rkt new file mode 100644 index 0000000..6dd1ecd --- /dev/null +++ b/tests/error.rkt @@ -0,0 +1,18 @@ +#lang racket +(require "../main.rkt" rackunit) + +(test-begin + (after + (define (do-test files) + (apply test-files! files) + (define c (get-test-coverage)) + (define covered + (map (compose path->string last explode-path) files)) + (for-each + (lambda (x) (check-not-false (member x covered))) + files) + (clear-coverage!)) + (define files (list "error-file.rkt" "prog.rkt")) + (do-test files) + (do-test (reverse files)) + (clear-coverage!)))