Closed viebel closed 3 years ago
When two sets contains different elements, midje is unable to compare them.
I have been able to narrow down my problem to the following minimal cases:
(fact #{"aa"} => #{"bb"})
(fact {:a 1 :b #{"aa"}} => {:a 2 :b #{"aa"}})
which cause an exception:
1. Unhandled java.lang.ClassCastException class midje.util.ordered_set.OrderedSet cannot be cast to class midje.util.ordered_set.OrderedSet (midje.util.ordered_set.OrderedSet is in unnamed module of loader clojure.lang.DynamicClassLoader @507760dc; midje.util.ordered_set.OrderedSet is in unnamed module of loader clojure.lang.DynamicClassLoader @3dfceefd) ordered_set.clj: 129 midje.util.ordered-set/transient-ordered-set ordered_set.clj: 128 midje.util.ordered-set/transient-ordered-set ordered_set.clj: 90 midje.util.ordered-set.OrderedSet/asTransient core.clj: 3347 clojure.core/transient core.clj: 6895 clojure.core/into core.clj: 6887 clojure.core/into util.clj: 78 midje.emission.plugins.util/nested-sort util.clj: 60 midje.emission.plugins.util/nested-sort default_failure_lines.clj: 143 midje.emission.plugins.default-failure-lines/summarize default_failure_lines.clj: 141 midje.emission.plugins.default-failure-lines/summarize default.clj: 13 midje.emission.plugins.default/fail default.clj: 12 midje.emission.plugins.default/fail AFn.java: 154 clojure.lang.AFn/applyToHelper AFn.java: 144 clojure.lang.AFn/applyTo Var.java: 705 clojure.lang.Var/applyTo core.clj: 665 clojure.core/apply core.clj: 660 clojure.core/apply api.clj: 30 midje.emission.api/bounce-to-plugin api.clj: 26 midje.emission.api/bounce-to-plugin RestFn.java: 423 clojure.lang.RestFn/invoke api.clj: 49 midje.emission.api/fail api.clj: 46 midje.emission.api/fail checkables.clj: 54 midje.checking.checkables/check-for-match checkables.clj: 31 midje.checking.checkables/check-for-match checkables.clj: 83 midje.checking.checkables/check-result checkables.clj: 81 midje.checking.checkables/check-result checkables.clj: 129 midje.checking.checkables/check-one/fn thread_safe_var_nesting.clj: 32 midje.util.thread-safe-var-nesting/with-altered-roots* thread_safe_var_nesting.clj: 30 midje.util.thread-safe-var-nesting/with-altered-roots* checkables.clj: 122 midje.checking.checkables/check-one checkables.clj: 116 midje.checking.checkables/check-one 2f4a71a9358344ac4cef041a5db18976aa2c7711-init.clj: 15 mr-peanutbutter.services.application-storage-test/eval63658/fn/fn thread_safe_var_nesting.clj: 32 midje.util.thread-safe-var-nesting/with-altered-roots* thread_safe_var_nesting.clj: 30 midje.util.thread-safe-var-nesting/with-altered-roots* 2f4a71a9358344ac4cef041a5db18976aa2c7711-init.clj: 15 mr-peanutbutter.services.application-storage-test/eval63658/fn AFn.java: 152 clojure.lang.AFn/applyToHelper AFn.java: 144 clojure.lang.AFn/applyTo AFunction.java: 31 clojure.lang.AFunction$1/doInvoke RestFn.java: 397 clojure.lang.RestFn/invoke facts.clj: 32 midje.checking.facts/check-one/fn facts.clj: 31 midje.checking.facts/check-one facts.clj: 9 midje.checking.facts/check-one facts.clj: 36 midje.checking.facts/creation-time-check facts.clj: 34 midje.checking.facts/creation-time-check 2f4a71a9358344ac4cef041a5db18976aa2c7711-init.clj: 15 mr-peanutbutter.services.application-storage-test/eval63658 2f4a71a9358344ac4cef041a5db18976aa2c7711-init.clj: 15 mr-peanutbutter.services.application-storage-test/eval63658 Compiler.java: 7176 clojure.lang.Compiler/eval Compiler.java: 7131 clojure.lang.Compiler/eval core.clj: 3214 clojure.core/eval core.clj: 3210 clojure.core/eval main.clj: 414 clojure.main/repl/read-eval-print/fn main.clj: 414 clojure.main/repl/read-eval-print main.clj: 435 clojure.main/repl/fn main.clj: 435 clojure.main/repl main.clj: 345 clojure.main/repl RestFn.java: 137 clojure.lang.RestFn/applyTo core.clj: 665 clojure.core/apply core.clj: 660 clojure.core/apply regrow.clj: 20 refactor-nrepl.ns.slam.hound.regrow/wrap-clojure-repl/fn RestFn.java: 1523 clojure.lang.RestFn/invoke interruptible_eval.clj: 79 nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 55 nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 142 nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn AFn.java: 22 clojure.lang.AFn/run session.clj: 171 nrepl.middleware.session/session-exec/main-loop/fn session.clj: 170 nrepl.middleware.session/session-exec/main-loop AFn.java: 22 clojure.lang.AFn/run Thread.java: 834 java.lang.Thread/run
Hey @viebel, I spun up your example in a blank project using Midje 1.9.9 and wasn't able to reproduce it. What version of the lib are you using?
1.9.9
lein clean and my problem is solved
lein clean
When two sets contains different elements, midje is unable to compare them.
I have been able to narrow down my problem to the following minimal cases:
which cause an exception: