From f28e76da7046b47943700bc8ced51cff03f73884 Mon Sep 17 00:00:00 2001 From: Ryan Plessner Date: Sat, 8 Aug 2015 21:20:29 -0400 Subject: [PATCH 1/3] Add an Uncovered Expressions Column to HTML report --- cover/private/html/assets/app.js | 1 + cover/private/html/html.rkt | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/cover/private/html/assets/app.js b/cover/private/html/assets/app.js index 534727d..68927f9 100644 --- a/cover/private/html/assets/app.js +++ b/cover/private/html/assets/app.js @@ -61,6 +61,7 @@ window.onload = function() { createSorter('file-name', 'up', stringCompareDesc, stringCompareAsc); createSorter('coverage-percentage', 'up', floatCompareAsc, floatCompareDesc); createSorter('covered-expressions', 'up', floatCompareAsc, floatCompareDesc); + createSorter('uncovered-expressions', 'up', floatCompareAsc, floatCompareDesc); createSorter('total-expressions', 'up', floatCompareAsc, floatCompareDesc); sortTable('file-name', stringCompareAsc); }; diff --git a/cover/private/html/html.rkt b/cover/private/html/html.rkt index 06fa567..5c10a37 100644 --- a/cover/private/html/html.rkt +++ b/cover/private/html/html.rkt @@ -261,6 +261,7 @@ (th ([class "file-name"]) "File" ,(file-sorter "file-name")) (th ([class "coverage-percentage"]) "Coverage Percentage" ,(file-sorter "coverage-percentage")) (th ([class "covered-expressions"]) "Covered Expressions" ,(file-sorter "covered-expressions")) + (th ([class "uncovered-expressions"]) "Covered Expressions" ,(file-sorter "uncovered-expressions")) (th ([class "total-expressions"]) "Total Expressions" ,(file-sorter "total-expressions")))) (tbody () ,@(for/list ([(path expr-info) (in-hash expr-coverages)]) @@ -275,13 +276,16 @@ (define (tr:file-report path expr-coverage-info) (define local-file (path->string (find-relative-path (current-directory) (string->path path)))) - (define percentage (* 100 (/ (first expr-coverage-info) (second expr-coverage-info)))) + (define covered (first expr-coverage-info)) + (define total (second expr-coverage-info)) + (define percentage (* 100 (/ covered total))) (define styles `([class "file-info"])) `(tr ,styles (td ([class "file-name"]) (a ([href ,(coverage-report-link path)]) ,local-file)) (td ([class "coverage-percentage"]) ,(~r percentage #:precision 2)) - (td ([class "covered-expressions"]) ,(~r (first expr-coverage-info) #:precision 2)) - (td ([class "total-expressions"]) ,(~r (second expr-coverage-info) #:precision 2)))) + (td ([class "covered-expressions"]) ,(~r covered #:precision 2)) + (td ([class "uncovered-expressions"]) ,(~r (- total covered) #:precision 2)) + (td ([class "total-expressions"]) ,(~r total #:precision 2)))) (module+ test (test-begin (check-equal? (tr:file-report "foo.rkt" (list 0 1)) @@ -289,12 +293,14 @@ (td ([class "file-name"]) (a ((href "foo.html")) "foo.rkt")) (td ([class "coverage-percentage"]) "0") (td ([class "covered-expressions"]) "0") + (td ([class "uncovered-expressions"]) "1") (td ([class "total-expressions"]) "1")))) (test-begin (check-equal? (tr:file-report "foo.rkt" (list 10 10)) '(tr ((class "file-info")) (td ([class "file-name"]) (a ((href "foo.html")) "foo.rkt")) (td ([class "coverage-percentage"]) "100") (td ([class "covered-expressions"]) "10") + (td ([class "uncovered-expressions"]) "0") (td ([class "total-expressions"]) "10"))))) ;; Path -> String From 460e6bc33a00296a677f13646c21a2e943f908ad Mon Sep 17 00:00:00 2001 From: Spencer Florence Date: Sat, 8 Aug 2015 21:06:14 -0500 Subject: [PATCH 2/3] fixed generating coverage info for cross-phase-persistant files --- cover/strace.rkt | 7 +++++++ cover/tests/test-cross-phase-persist.rkt | 14 ++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/cover/strace.rkt b/cover/strace.rkt index 94c50eb..b9a4fd9 100644 --- a/cover/strace.rkt +++ b/cover/strace.rkt @@ -41,6 +41,13 @@ (lambda (stx phase) (define e (cond [(cross-phase-persist? stx) + (initialize-test-coverage-point stx) + (log-message (current-logger) + 'info + topic + logger-covered-message + (stx->srcloc stx) + #f) stx] [(add-cover-require (annotate-clean (annotate-top stx phase))) => expand-syntax] diff --git a/cover/tests/test-cross-phase-persist.rkt b/cover/tests/test-cross-phase-persist.rkt index b5fcc08..546c879 100644 --- a/cover/tests/test-cross-phase-persist.rkt +++ b/cover/tests/test-cross-phase-persist.rkt @@ -1,6 +1,12 @@ #lang racket -(require cover rackunit racket/runtime-path (only-in "../cover.rkt" coverage-wrapper-map)) +(require cover rackunit racket/runtime-path cover/private/file-utils) (define-runtime-path file "cross-phase-persist.rkt") -(parameterize ([current-cover-environment (make-cover-environment)]) - (test-files! file) - (check-equal? (coverage-wrapper-map (get-test-coverage)) (hash))) +(test-case + "covering cross-phase-persistent files should enter them into the coverage table" + (parameterize ([current-cover-environment (make-cover-environment)]) + (test-files! file) + (define c (get-test-coverage)) + (check-not-exn + (lambda () + (c (->absolute file) 1))) + (check-equal? (c (->absolute file) 1) 'covered))) From 5bc2a81452d0ceafc32d8d697603d39061ab4c17 Mon Sep 17 00:00:00 2001 From: Ryan Plessner Date: Sat, 8 Aug 2015 22:28:12 -0400 Subject: [PATCH 3/3] Forgot to change copy --- cover/private/html/html.rkt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cover/private/html/html.rkt b/cover/private/html/html.rkt index 5c10a37..32e0a6a 100644 --- a/cover/private/html/html.rkt +++ b/cover/private/html/html.rkt @@ -261,7 +261,7 @@ (th ([class "file-name"]) "File" ,(file-sorter "file-name")) (th ([class "coverage-percentage"]) "Coverage Percentage" ,(file-sorter "coverage-percentage")) (th ([class "covered-expressions"]) "Covered Expressions" ,(file-sorter "covered-expressions")) - (th ([class "uncovered-expressions"]) "Covered Expressions" ,(file-sorter "uncovered-expressions")) + (th ([class "uncovered-expressions"]) "Uncovered Expressions" ,(file-sorter "uncovered-expressions")) (th ([class "total-expressions"]) "Total Expressions" ,(file-sorter "total-expressions")))) (tbody () ,@(for/list ([(path expr-info) (in-hash expr-coverages)])