X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fcoverage.scm;h=0f1ae319ad627bf2f79eee457b13785d3ba41646;hb=79c17e0eaedca79e5f7605f5b9f92db27c68e679;hp=0b799599e160a78524475c2f37af8fd609368e36;hpb=f3231481b016a9f4e4925a96c2db2b8735752f56;p=lilypond.git diff --git a/scm/coverage.scm b/scm/coverage.scm index 0b799599e1..0f1ae319ad 100644 --- a/scm/coverage.scm +++ b/scm/coverage.scm @@ -1,32 +1,38 @@ +;;;; coverage.scm + (define-module (scm coverage)) (use-modules (lily) - (ice-9 rdelim) - (ice-9 format)) + (ice-9 rdelim) + (ice-9 regex) + (ice-9 format) ;; needed for ~8@ + ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-public (coverage:show-all) - (newline) - (hash-fold - (lambda (key val acc) - (if (string-contains key "lilypond") - (begin - (format #t - " -Coverage for file: ~a -" - key) - (display-coverage key val))) - #t) - #t - coverage-table)) +(define-public (coverage:show-all filter?) + (let* + ((keys + (filter filter? + (sort (map car (hash-table->alist coverage-table)) string= i (vector-length vec)))) - - (display (format #f "~8a: ~a\n" - (if (vector-ref vec i) - "#t" - "") (car l)))))) + ((i 0 (1+ i)) + (l lines (cdr l))) + ((or (null? l) )) + + (format out format-str + (cond + ((and (< i (vector-length vec)) (vector-ref vec i)) "1") + ((and (string-contains file ".ly") (string-match "^[ \t]*%.*$" (car l))) + "-") + ((string-match "^[ \t]*[()'`,]*$" (car l)) + "-") + ((string-match "^[ \t]*;.*$" (car l)) + + "-") + (else "0")) + (1+ i) + (car l))))) (define (record-coverage key cont exp env) (let* ((name (source-property exp 'filename)) (line (source-property exp 'line)) - (vec (and name (hashv-ref coverage-table name #f))) + (vec (and name (hash-ref coverage-table name #f))) (veclen (and vec (vector-length vec))) (veccopy (lambda (src dst) - (vector-move-left! src 0 (vector-length src) - dst 0) - dst))) + (vector-move-left! src 0 (vector-length src) + dst 0) + dst))) (if (and line name) - (begin - (if (or (not vec) (>= line (vector-length vec))) - (set! vec - (hashv-set! coverage-table name - (if vec - (veccopy vec (make-vector (1+ line) #f)) - (make-vector (1+ line) #f))))) - - (vector-set! vec line #t)) - ))) - - - - - + (begin + (if (or (not vec) (>= line (vector-length vec))) + (set! vec + (hash-set! coverage-table name + (if vec + (veccopy vec (make-vector (1+ line) #f)) + (make-vector (1+ line) #f))))) + + (vector-set! vec line #t)) + )))