Add test coverage check
[wolf] / .candle
1 (:packages :wolf :wolf-test :sheep :sb-cover)
2 (:name :wolf
3  :tasks
4  ((:name :test
5    :directions (wolf-test:run-all-tests))
6   (:name :coverage :directions
7    (progn
8     (let
9      ((coverage nil)
10       (*error-output* (make-broadcast-stream))
11       (*standard-output* (make-broadcast-stream)))
12      (declaim (optimize sb-cover:store-coverage-data))
13      (asdf:load-system :wolf :force t)
14      (wolf-test:run-all-tests)
15      (setf coverage
16       (apply #'+
17        (mapcar
18         (lambda (coverage-item) (length (remove t (cdr coverage-item) :key #'cdr)))
19         (sb-cover:save-coverage))))
20      (declaim (optimize (sb-cover:store-coverage-data 0)))
21      (asdf:load-system :wolf :force t)
22      ; 39 here is the number of unexecuted forms/branches due to
23      ; error checking that can get triggered during mistakes in development,
24      ; but aren't accessible during normal running (because if they were,
25      ; that's be a bug we needed to fix!)
26      (= coverage 39))))
27   (:name :wolf :directions
28    (wolf:pretty-print-check-directory "src"
29     :copyright-notice "; Copyright .* Frank Duncan \\(frank@consxy.com\\) under AGPL3.  See distributed LICENSE.txt."))
30   (:name :sheep :directions
31    (sheep:pretty-print-validate-packages :wolf))))
32
33 ; vim:ft=lisp