   "Run the specified code-string against the test cases for the problem with the
 specified id.
 
-Return a vector of [message-to-display url-to-display-at num-tests-passed]."
+Return a map, {:message, :url, :num-tests-passed}."
   [id raw-code]
   (try
     (let [code (.trim raw-code)

         :else (str "You've solved the problem! If you "
                    (login-link "log in" (str "/problem/" _id)) " we can track your progress."))]
    (session/session-put! :code [_id code])
    [(str message " " gist-link) (str "/problem/" _id)]))

(def restricted-list '[use require in-ns future agent send send-off pmap pcalls])


                          "You failed the unit tests")
                        (catch Throwable t (.getMessage t)))))
          [passed [fail-msg]] (split-with nil? results)]
      (assoc (if fail-msg
               {:message fail-msg :url *url*}
               (mark-completed problem code))
        :num-tests-passed (count passed)))
    (catch Throwable t {:message (.getMessage t), :url *url*
                        :num-tests-passed 0})))

(defn static-run-code [id raw-code]
  (let [{:keys [message url num-tests-passed]}
        (binding [*url* (str *url* "#prob-desc")]
          (run-code id raw-code))]
    (session/flash-put! :failing-test num-tests-passed)
    (flash-msg message url)))

(defn render-test-cases [tests]
