hide byte offset api

This commit is contained in:
Spencer Florence 2015-04-05 17:33:26 -04:00
parent 1a9a68b2ef
commit 75aaaa2066
3 changed files with 13 additions and 12 deletions

View File

@ -35,7 +35,6 @@
[make-covered?
(-> file-coverage/c path-string?
(->* (exact-positive-integer?)
(#:byte? boolean?)
(or/c 'covered 'uncovered 'irrelevant)))]
[generate-coveralls-coverage coverage-gen/c]

View File

@ -31,11 +31,10 @@
(define submods (irrelevant-submodules))
(define vec
(list->vector (string->list (file->string path))))
(define file/byte->str-offset (make-byte->str-offset vec))
(define file-location-coverage-cache
(coverage-cache-file path c submods))
(lambda (loc #:byte? [byte? #f])
(hash-ref file-location-coverage-cache (if (not byte?) loc (- loc (file/byte->str-offset loc)))
(lambda (loc)
(hash-ref file-location-coverage-cache loc
'missing)))
;; (or/c #f (listof symbol))
@ -170,12 +169,9 @@
(define coverage (hash-ref (get-test-coverage) f))
(define covered? (make-covered? coverage f))
(check-equal? (covered? 14) 'irrelevant)
(check-equal? (covered? 14 #:byte? #t) 'irrelevant)
(check-equal? (covered? 17) 'irrelevant)
(check-equal? (covered? 28) 'irrelevant)
(check-equal? (covered? 35) 'covered)
(check-equal? (covered? 50) 'uncovered)
(check-equal? (covered? 51 #:byte? #t) 'uncovered)
(check-equal? (covered? 52) 'irrelevant)
(check-equal? (covered? 53) 'irrelevant)
(check-equal? (covered? 54) 'irrelevant)))))

View File

@ -58,7 +58,7 @@
(define output-file
(apply build-path (append coverage-dir-list (list relative-output-file))))
(define output-dir (apply build-path coverage-dir-list))
(define assets-path
(define assets-path
(path->string
(apply build-path
(append (build-list (sub1 (length coverage-dir-list)) (const ".."))
@ -352,27 +352,33 @@
;; we don't need to look at the span because the coverage is expression based
(define p (syntax-position e))
(if p
(covered? p #:byte? #t)
(covered? p)
'missing))
(define e
(with-module-reading-parameterization
(thunk (with-input-from-file path read-syntax))))
(thunk (with-input-from-file path
(lambda ()
(port-count-lines! (current-input-port))
(read-syntax))))))
(define (ret e) (values (e->n e) (a->n e)))
(define (a->n e)
(case (is-covered? e)
[(covered uncovered) 1]
[else 0]))
(define (e->n e) (if (eq? (is-covered? e) 'covered) 1 0))
(define-values (covered total)
(let recur ([e e])
(syntax-parse e
[(v ...)
(for/fold ([covered (e->n e)] [count (a->n e)])
([e (in-syntax e)])
(define-values (cov cnt) (recur e))
([v (in-syntax e)])
(define-values (cov cnt) (recur v))
(values (+ covered cov)
(+ count cnt)))]
[e:expr (ret #'e)]
[_ (values 0 0)])))
(list covered total))