 (defn spec-report
   "Like dot-report but concatenates :doc strings for nested specs."
   [r]
-  (println "Running" (:name (details r)))
+  (println "Running" (:name (details r))
+           "at" (str (java.util.Date.)))
   (spec-report* r [])
   (newline)
   (print-summary r))

(defn print-summary [r]
  (let [{:keys [assertions pass fail error]} (summary r)]
    (println "Ran" assertions "assertions.")
    (println fail "failures," error "errors.")))

(defn dot-report
  "Simple spec report.  Prints a dot for each passed assertion; prints
  details for each failure."
  [r]
  (println "Running" (:name (details r)))
  (doseq [c (assertion-results r)]
    (if (success? c)
      (do (print ".") (flush))
      (do (newline) (print-details c))))
  (newline)
  (print-summary r))

  number, doc string, and stack trace if applicable."
  [r]
  (println
   (cond (success? r) (colorize "SUCCESS" :fg-green)
         (:throwable r) (colorize "ERROR" :fg-red)
         :else (colorize "FAIL" :fg-red)))
  (let [m (details r)]
    (when-let [n (:name m)] (println "Name:" n))
    (when-let [d (:doc m)] (println "Doc: " d))
