Skip to content

Commit cc27390

Browse files
authored
Merge pull request #312 from clojure/cljs-3476/async-test
CLJS-3476: async deftest support
2 parents 6c7a168 + 5e2a645 commit cc27390

2 files changed

Lines changed: 202 additions & 232 deletions

File tree

src/main/cljs/cljs/test.cljc

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,11 +239,17 @@
239239
240240
When cljs.analyzer/*load-tests* is false, deftest is ignored."
241241
[name & body]
242-
(when ana/*load-tests*
243-
`(do
244-
(def ~(vary-meta name assoc :test `(fn [] ~@body))
245-
(fn [] (cljs.test/test-var (.-cljs$lang$var ~name))))
246-
(set! (.-cljs$lang$var ~name) (var ~name)))))
242+
(let [body (if (:async (meta name))
243+
(let [done-sym (gensym "done")]
244+
[`(cljs.test/async ~done-sym
245+
(try ~@body
246+
(finally (~done-sym))))])
247+
body)]
248+
(when ana/*load-tests*
249+
`(do
250+
(def ~(vary-meta name assoc :test `(fn [] ~@body))
251+
(fn [] (cljs.test/test-var (.-cljs$lang$var ~name))))
252+
(set! (.-cljs$lang$var ~name) (var ~name))))))
247253

248254
(defmacro async
249255
"Wraps body as a CPS function that can be returned from a test to

0 commit comments

Comments
 (0)