     (filter #((:pred %) proc encoding opts)
             [{:pred (constantly true)
               :desc "exemplar file"
+              :input transit-exemplars
               :path [:tests :exemplar-file]
-              :test #(test-transit transit-exemplars proc encoding)}
+              :test #(test-transit % proc encoding)}
              {:pred (constantly true)
               :desc "EDN corner case"
+              :input cc/forms
               :path [:tests :corner-case-edn]
-              :test #(test-edn cc/forms proc encoding)}
+              :test #(test-edn % proc encoding)}
              {:pred (fn [_ e _] (= e :json))
               :desc "JSON transit corner case"
+              :input (map (fn [s] (.getBytes s)) cc/transit-json)
               :path [:tests :corner-case-transit-json]
-              :test #(test-transit (map (fn [s] (.getBytes s)) cc/transit-json) proc encoding)}
+              :test #(test-transit % proc encoding)}
              {:pred (fn [_ _ o] (:gen o))
               :desc "generated EDN"
+              :input (:generated-forms opts)
               :path [:tests :generated-edn]
-              :test #(test-edn (:generated-forms opts) proc encoding)}
+              :test #(test-edn % proc encoding)}
              {:pred (fn [_ _ o] (:time o))
               :desc "timing"
+              :input transit-exemplars
               :path [:time]
-              :test #(let [ms (test-timing transit-exemplars proc encoding)]
+              :test #(let [ms (test-timing % proc encoding)]
                        {:ms ms
                         :count (count transit-exemplars)
                         :encoding encoding})}])))

  directories which have a `bin/roundtrip` script. Options can be used
  to control which project is tested, which encoding to test, turn on
  generative testing and collect timing information."
  (:require [transit.read :as r]
            [transit.write :as w]
            [clojure.java.io :as io]
            [transit.generators :as gen]
            [transit.corner-cases :as cc])
  (:import [java.io PrintStream ByteArrayOutputStream ByteArrayInputStream
            BufferedInputStream BufferedOutputStream FileInputStream]
           [org.apache.commons.codec.binary Hex]))

(def TIMEOUT
  "Timeout for roundtrip requests to native implementation"

  (println (format "testing %s's %s encoding"
                   project
                   (name encoding)))
  (if (= encoding :msgpack)
    (println "msgpack tests are disabled until we have a working implementation.")
    (let [command (str "../" project "/bin/roundtrip")]
      (report (-> (verify-impl-encoding command encoding opts)
                  (assoc :project project))
              opts))))

  (defn verify-impl
  "Given a project name like 'transit-java', 'transit-clj' or
  'transit-ruby', and user provided options, run tests for each
  encoding specified in the options. Encoding can be either `:json` or
