(use-modules (lily)
(ice-9 rdelim)
+ (ice-9 regex)
(ice-9 format))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define-public (coverage:show-all)
+(define-public (coverage:show-all filter?)
+
(newline)
(hash-fold
(lambda (key val acc)
- (if (string-contains key "lilypond")
+ (if (filter? key)
(begin
(format #t
"
Coverage for file: ~a
"
key)
- (display-coverage key val)))
+ (display-coverage key val
+ (format #f "~a.cov" (basename key))
+ )))
#t)
#t
coverage-table))
(trap-enable 'memoize-symbol)
(trap-enable 'traps))
+
(define-public (coverage:disable)
(trap-set! memoize-symbol-handler #f)
(trap-disable 'memoize-symbol))
(define (read-lines port)
(string-split (read-delimited "" port) #\newline))
-(define (display-coverage file vec)
+(define (display-coverage file vec out-file)
(let*
- ((lines (read-lines (open-file file "r"))))
+ ((lines (read-lines (open-file file "r")))
+ (format-str "~8@a: ~5@a:~a\n")
+ (out (if out-file (open-output-file out-file)
+ (current-output-port))))
+ (format out format-str "-" 0 (format #f "Source:~a" file))
(do
((i 0 (1+ i))
(l lines (cdr l)))
- ((or (null? l) (>= i (vector-length vec))))
-
- (display (format #f "~8a: ~a\n"
- (if (vector-ref vec i)
- "#t"
- "") (car 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))
+ (format (current-output-port) "~a l=~a, m=~a\n"
+ i
+ (car l) (string-match "^[ \t]*;.*$" (car l)))
+
+ "-")
+ (else "0"))
+ (1+ i)
+ (car l)))))
(define (record-coverage key cont exp env)
(let*