-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
spec.clj
32 lines (25 loc) · 988 Bytes
/
spec.clj
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
(ns iced.nrepl.spec)
(defn- try-requires [& syms]
(try
(doseq [sym syms]
(require sym))
(catch Exception ex nil)))
(try-requires 'clojure.spec.test.alpha
'clojure.spec.test)
(defmacro stest [fname & args]
`(when-let [f# (or (resolve (symbol "clojure.spec.test.alpha" ~fname))
(resolve (symbol "clojure.spec.test" ~fname)))]
(f# ~@args)))
(defn check [sym num-tests]
(when-let [test-results (stest "check" sym {:clojure.spec.test.check/opts {:num-tests num-tests}})]
(let [ret (-> test-results first :clojure.spec.test.check/ret)
{:keys [result num-tests fail]} ret]
(cond
(empty? test-results)
{:result "OK" :num-tests 0}
(true? result)
{:result "OK" :num-tests num-tests}
(instance? Exception result)
{:result "NG" :num-tests num-tests :message (.getMessage result) :fail fail}
:else
{:result "NG" :num-tests num-tests :fail fail}))))