Add retest, sorta.

This commit is contained in:
Clojure 2011-05-05 21:18:29 -07:00
parent 668919b15d
commit aba61b862a
3 changed files with 25 additions and 1 deletions

1
.gitignore vendored
View file

@ -8,3 +8,4 @@ leiningen*.jar
lein-swank/lein-swank*.jar
autodoc/
bin/nom
.lein-failures

13
src/leiningen/retest.clj Normal file
View file

@ -0,0 +1,13 @@
(ns leiningen.retest
"Run only the test namespaces which failed last time around."
(:require [leiningen.test]))
(defn retest
"Run only the test namespaces which failed last time around.
Requires loading leiningen.hooks.retest to :hooks in project.clj."
[project]
;; TODO: detect branch change; clear failure list
(if (.exists (java.io.File. ".lein-failures"))
(apply leiningen.test/test project (->> (slurp ".lein-failures")
read-string sort (map name)))
(leiningen.test/test project)))

View file

@ -25,8 +25,18 @@ each namespace and print an overall summary."
(doseq [n# '~namespaces]
(require n# :reload))
~(form-for-hook-selectors selectors)
(let [summary# (binding [clojure.test/*test-out* *out*]
(let [failures# (atom #{})
;; _# (robert.hooke/add-hook
;; #'clojure.test/report
;; (fn report-with-failures [report# m# & args#]
;; (when (#{:error :fail} (:type m#))
;; (swap! failures# conj
;; (-> clojure.test/*testing-vars*
;; first meta :ns ns-name)))
;; (apply report# m# args#)))
summary# (binding [clojure.test/*test-out* *out*]
(apply ~'clojure.test/run-tests '~namespaces))]
(spit ".lein-failures" (pr-str @failures#))
(when-not (= "1.5" (System/getProperty "java.specification.version"))
(shutdown-agents))
;; Stupid ant won't let us return anything, so write results to disk