Skip to content

middleware.test: offer fail-fast functionality #709

Closed
@vemv

Description

@vemv

It would be sweet to offer fail-fast functionality. Under it:

  • The first failing failing test var fails that ns; and
  • The first failing ns fails the test run.

Relevant code:

(doseq [v vars]
(each-fixture-fn (fn [] (test-var v))))))

(doseq [[ns vars] (group-by
(comp :ns meta)
(query/vars var-query))]
(test-ns ns vars))

Some inspiration:

(defn run-tests
  "Like clojure.test/run-tests, but fails fast."
  [& namespaces]
  (let [summary (-> (->> namespaces
                         (reduce (bound-fn [r n]
                                   (let [{:keys [fail error]
                                          :as v} (clojure.test/test-ns n)
                                         failed? (some pos? [fail error])
                                         ret (merge-with + r v)]
                                     (cond-> ret
                                       failed? reduced)))
                                 clojure.test/*initial-report-counters*))
                    (assoc :type :summary))]
    (clojure.test/do-report summary)
    summary))

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions