 
 (core/deftask set-summary
   []
-  (fn [next-handler]
-    (fn [fileset]
-      (set-summary! pod/data)
-      (next-handler fileset))))
+  (core/with-pass-thru [_]
+    (set-summary-data! pod/data)))
 
 (defn test-task
   "Create a boot test task by wrapping other tasks, either the result of

    (.countDown (get data "start-latch"))))

(defn- print-summary!
  [summary]
  ;; (util/dbug "%s" (into {} summary))
  (util/info "Ran %s tests containing %s assertions.\n"
             (get summary "test" 0)
             (+ (get summary "pass" 0) (get summary "fail" 0) (get summary "error" 0)))
  (util/info "%s failures, %s errors.\n"
             (get summary "fail" 0)
             (get summary "error" 0)))

(core/deftask test-report
  [d data OBJECT ^:! code "The data for this task"]
  (fn [next-handler]
    (fn [fileset]
      (let [summaries (get data "test-summaries")]
        ;; Individual report
        (doseq [[command-str summary] summaries]
          (util/info "\nReporting \"boot %s\"\n" command-str)
          (print-summary! summary))
        ;; Summary
        (util/info "\nSummary\n")
        (print-summary! (apply merge-with + (map (partial into {}) (vals summaries))))))))

(defn done!
  "Signal that this pod is shutting down"


;; test helpers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn command-str
  "Given a seq of command segments, the input to the runboot task,
  return its string representation. Useful for Java interop, for example
  it can be key in a HashMap."
  [command-seq]
  (string/join " " command-seq))

(defn initial-sync-map
  "Generates the (mutable) sync map necessary for the test task.
  This map will be modified during parallel testing so make sure the
