 (defn- validate-opts
   [opts]
   (assert (every? ident? (keys (:gen opts))) "test :gen expects ident keys"))
+
+(defn syms-to-test
+  "Returns a coll of registered syms matching ns-or-names (a symbol or
+collection of symbols).
+
+A symbol matches ns-or-names if ns-or-names includes either the symbol
+itself or the symbol's namespace symbol.
+
+If no ns-or-names specified, returns all registered syms."
+  ([] (sequence
+       (filter symbol?)
+       (keys (s/registry))))
+  ([ns-or-names]
+     (let [match? (sym-matcher (collectionize ns-or-names))]
+       (sequence
+        (comp (filter symbol?)
+              (filter match?))
+        (keys (s/registry))))))
 
 (defn test-fn
   "Runs generative tests for fn f using spec and opts. See

     (test-1 {:f f :spec spec} opts)))

(defn test
  "Checks specs for fns named by sym-or-syms (a symbol or
collection of symbols) using test.check.

The opts map includes the following optional keys, where stc
aliases clojure.spec.test.check: 

:no-gen     unable to generate :args
:no-fn      unable to resolve fn to test
"
  ([syms] (test syms nil))
  ([syms opts]
     (validate-opts opts)
     (pmap #(test-1 (sym->test-map %) opts) syms)))

(defn abbrev-result
  "Given a test result, returns an abbreviated version
