Add coverage, get to near 100
[sheep] / .candle
diff --git a/.candle b/.candle
index 5ba07cc780d6853588b8447a03c525e3fcd49de3..579c2096b3abca3b521f46bc46f5868a5bf57cdb 100644 (file)
--- a/.candle
+++ b/.candle
@@ -1,8 +1,29 @@
-(:packages :sheep :sheep-test :wolf)
+(:packages :sheep :sheep-test :wolf :sb-cover)
 (:name :sheep
  :tasks
  ((:name :test :directions
    (sheep-test:run-all-tests))
+  (:name :coverage :directions
+   (progn
+    (let
+     ((coverage nil)
+      (*error-output* (make-broadcast-stream))
+      (*standard-output* (make-broadcast-stream)))
+     (declaim (optimize sb-cover:store-coverage-data))
+     (asdf:load-system :sheep :force t)
+     (sheep-test:run-all-tests)
+     (setf coverage
+      (apply #'+
+       (mapcar
+        (lambda (coverage-item) (length (remove t (cdr coverage-item) :key #'cdr)))
+        (sb-cover:save-coverage))))
+     (declaim (optimize (sb-cover:store-coverage-data 0)))
+     (asdf:load-system :sheep :force t)
+     ; 34 here is the number of unexecuted forms/branches due to
+     ; error checking that can get triggered during mistakes in development,
+     ; but aren't accessible during normal running (because if they were,
+     ; that's be a bug we needed to fix!)
+     (= coverage 34))))
   (:name :wolf :directions
    (wolf:pretty-print-check-directory "src"
     :copyright-notice "; Copyright .* Frank Duncan \\(frank@consxy.com\\) under AGPL3.  See distributed LICENSE.txt."))