real eyes realize real lies
Lazy sequences aren't data. They can throw exceptions. They can fire missiles.
This lib can't help you if you're firing missiles, but it will realize all lazy
sequences in a Clojure data structure, replacing them with
{:realize.core/exception e}
if they throw an exception.
(require '[realize.core :as [realize]])
(def e (Exception. "Boom!"))
(def danger-seq (map (fn [_] (throw e)) [1 2 3]))
(realize/realize {:foo danger-seq})
;; => {:foo {:realize.core/exception e}}
It also has a tool to check if your data structure threw any exceptions when being realized:
(require '[realize.core :as realize])
(def e (Exception. "Boom!"))
(realize/find-exceptions {:foo {:realize.core/exception e}})
;; => [{:exception e :path [:foo]}]
Add [realize "1.1.0"]
to :dependencies
in your project.clj
.
This lib was created so that Prone does not explode when given lazy-seqs that throw exceptions when realized.
./bin/kaocha
will run all tests.
./bin/kaocha --watch
will run all the tests indefinitely. It sets up a
watcher on the code files. If they change, only the relevant tests will be
run again.
Copyright © (iterate inc 2018) Magnar Sveen
BSD-3-Clause, see LICENSE
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close