1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
; Copyright (c) Rich Hickey. All rights reserved.
; The use and distribution terms for this software are covered by the
; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
; which can be found in the file epl-v10.html at the root of this distribution.
; By using this software in any fashion, you are agreeing to be bound by
; the terms of this license.
; You must not remove this notice, or any other, from this software.
;
;; clojure.test-clojure
;;
;; Tests for the facilities provided by Clojure
;;
;; scgilardi (gmail)
;; Created 22 October 2008
(ns clojure.test-clojure
(:require [clojure.test :as t])
(:gen-class))
(def test-names
[:reader
:printer
:compilation
:evaluation
:special
:macros
:metadata
:ns-libs
:logic
:predicates
:control
:data-structures
:numbers
:sequences
:for
:multimethods
:other-functions
:vars
:refs
:agents
:atoms
:parallel
:java-interop
:test
:test-fixtures
;; libraries
:clojure-set
:clojure-xml
:clojure-zip
:protocols
:genclass
:main
:vectors
:annotations
:pprint
:serialization
:rt
:repl
:java.io
:string
:java.javadoc
:java.shell
:transients
:def
])
(def test-namespaces
(map #(symbol (str "clojure.test-clojure." (name %)))
test-names))
(defn run
"Runs all defined tests"
[]
(println "Loading tests...")
(apply require :reload-all test-namespaces)
(apply t/run-tests test-namespaces))
(defn run-ant
"Runs all defined tests, prints report to *err*, throw if failures. This works well for running in an ant java task."
[]
(let [rpt t/report]
(binding [;; binding to *err* because, in ant, when the test target
;; runs after compile-clojure, *out* doesn't print anything
*out* *err*
t/*test-out* *err*
t/report (fn report [m]
(if (= :summary (:type m))
(do (rpt m)
(if (or (pos? (:fail m)) (pos? (:error m)))
(throw (new Exception (str (:fail m) " failures, " (:error m) " errors.")))))
(rpt m)))]
(run))))
(defn -main
"Run all defined tests from the command line"
[& args]
(run)
(System/exit 0))
|