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? [make-covered?
(-> file-coverage/c path-string? (-> file-coverage/c path-string?
(->* (exact-positive-integer?) (->* (exact-positive-integer?)
(#:byte? boolean?)
(or/c 'covered 'uncovered 'irrelevant)))] (or/c 'covered 'uncovered 'irrelevant)))]
[generate-coveralls-coverage coverage-gen/c] [generate-coveralls-coverage coverage-gen/c]

View File

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

View File

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