explain-out is now public in master. Further mods may be coming re testing.
On Thursday, June 16, 2016 at 12:52:12 PM UTC-5, Sean Corfield wrote: > > I fear you’re missing my point. > > > > You can get close to the previous nice value with: > > > > (#’s/explain-out (:result (t/check-var #’ranged-rand))) > > > > But that leverages a private function / implementation detail and doesn’t > handle :failed-on very nicely: > > > > boot.user=> (#'s/explain-out (:result (t/check-var #'ranged-rand))) > > val: {:args {:start -3, :end 1}, :ret -5} fails predicate: (>= (:ret %) > (-> % :args :start)) > > :failed-on :fn > > > > When you run-all-tests you get the non-pretty-printed version as a > hard-to-read blob of text on stdout and a bare pass/fail map result. Having > that text formatted via something like explain-out would be a big help for > usability when testing. Having that function exposed publicly would be a > nice convenience for other tooling to build on top of clojure.spec.test. > > > > We can pass :reporter-fn to check-var / check-fn, but we run-all-tests > just passes println in and calls (prn ret) on the result of check-var so we > have no control over that output. > > > > Sean Corfield -- (904) 302-SEAN > An Architect's View -- http://corfield.org/ > > "If you're not annoying somebody, you're not really alive." > -- Margaret Atwood > > > > On 6/16/16, 6:33 AM, "Alex Miller" <clojure@googlegroups.com on behalf of > a...@puredanger.com> wrote: > > > > You haven't pretty-printed it to look very nice, but I think all of the > same information (and more due to shrinking) is still in the check-var > output. I don't know of any plan to add what you're asking for beyond > what's below. > > > > {:result > > {:clojure.spec/problems > > {[] > > {*:pred* *(>= (:ret %) (-> % :args :start))*, > > *:val* *{:args {:start -1, :end 2}, :ret -2}*, > > :via [], > > :in []}}, > > * :failed-on :fn*}, > > :seed 1466016600676, > > :failing-size 4, > > :num-tests 5, > > :fail [(-1 2)], > > :shrunk > > {:total-nodes-visited 5, > > :depth 1, > > :result > > {:clojure.spec/problems > > {[] > > {:pred (>= (:ret %) (-> % :args :start)), > > :val {:args {:start -1, :end 1}, :ret -2}, > > :via [], > > :in []}}, > > :failed-on :fn}, > > :smallest [(-1 1)]}} > > > > On Wednesday, June 15, 2016 at 2:54:27 PM UTC-5, Sean Corfield wrote: > > Given that we now have to use clojure.spec.test to get :ret / :fn tested, > we lose the “nice” exceptions explaining the conformance failure: > > > > Alpha 5: > > > > ;;=> ExceptionInfo Call to #'spec-example.core/ranged-rand did not conform > to spec: > > ;;=> At: [:fn] val: {:args {:start 8, :end 10}, :ret 7} fails predicate: > (>= (:ret %) (-> % :args :start)) > > ;;=> :clojure.spec/args (8 10) > > ;;=> clojure.core/ex-info (core.clj:4617) > > > > Alpha 6: > > > > boot.user=> (t/check-var #'ranged-rand) > > {:result {:clojure.spec/problems {[] {:pred (>= (:ret %) (-> % :args > :start)), :val {:args {:start -1, :end 2}, :ret -2}, :via [], :in []}}, > :failed-on :fn}, :seed 1466016600676, :failing-size 4, :num-tests 5, :fail > [(-1 2)], :shrunk {:total-nodes-visited 5, :depth 1, :result > {:clojure.spec/problems {[] {:pred (>= (:ret %) (-> % :args :start)), :val > {:args {:start -1, :end 1}, :ret -2}, :via [], :in []}}, :failed-on :fn}, > :smallest [(-1 1)]}} > > > > Are there plans to provide an “explain” equivalent for this? > > > > Sean Corfield -- (904) 302-SEAN > An Architect's View -- http://corfield.org/ > > "If you're not annoying somebody, you're not really alive." > -- Margaret Atwood > > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.