   :expected
   :actual)
 
-(defn- pushback-str
+(defn- read-str
+  "Parse a string and return a list of all Clojure expressions from it."
   [string]
-  (new PushbackReader (new StringReader string)))
+  (let [eof    (new Object)
+        reader (new PushbackReader (new StringReader string))]
+    (take-while
+      #(not (identical? % eof))
+       (repeatedly #(read reader false eof)))))
 
 (defn- file-reader
   "Return a buffered file reader."

  [results]
  (doseq result (filter (complement :success?) results)
    (.println *test-out*
      (str (pr-str (result :expr))
           "\n  expected: " (pr-str (result :expected))
           "\n  actual:   " (pr-str (result :actual)) "\n")))
  (.println *test-out*

     (map (partial re-sub #"^. ?" "") lines))])

(defn- expr-marker?
  "Is the line marked as an test expression?"
  [[marker _]]
  (= marker \>))

