Hi!
I've written a macro to generate tests for functions that have the ":_test"
key in their metadata. I know that clojure.test automatically runs tests
associated with ":test" keys, but I'd like to implement my own test-case
generation.
Here' what it looks like:
(defn my-last
"P01 (*) Find the last box of a list."
{ :_test '(= (my-last '(a b c d)) 'd) }
[lst]
(if (<= (count lst) 1)
(first lst)
(recur (rest lst
(defmacro gen-tests []
`(do ~@(for [f (map first (ns-publics *ns*)) :when (:_test (meta
(ns-resolve *ns* (symbol f]
`(clojure.test/deftest ~(symbol (str f '-test)) (clojure.test/is
~(:_test (meta (ns-resolve *ns* (symbol f)
The gen-tests macro basically enumerates all publics in the current
namespace and generates a 'deftest' declaration for each function that
contains the ":_test" key in its metadata.
I'm sure there exists more reasonable and idiomatic way to do the same
thing. Specifically, I'd really like to remove the repeating "(:_test (meta
...)" part, but I wasn't able to come up with the solution myself.
Any help will be appreciated. Thanks!
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en