-
Notifications
You must be signed in to change notification settings - Fork 82
Closed
Description
There seems to be an issue to do with how --watch mode establishes dynamic bindings that prevents set! being used on dynamic variables.
Given the project.clj from the README:
(defproject my-proj "0.1.0"
:dependencies [[org.clojure/clojure "1.10.1"]]
:profiles {:kaocha {:dependencies [[lambdaisland/kaocha "0.0-581"]]}}
:aliases {"kaocha" ["with-profile" "+kaocha" "run" "-m" "kaocha.runner"]}
:repl-options {:init-ns my-proj.core})And the following test suite:
(ns my-proj.core-test
(:require [clojure.test :refer :all]))
(deftest a-test
(is (do (set! *warn-on-reflection* true)
true)))Watch and non-watch mode behave differently:
Ambroses-MBP my-proj$ lein kaocha
[(.)]
1 tests, 1 assertions, 0 failures.
Ambroses-MBP my-proj$ lein kaocha --watch
[(E)]
Randomized with --seed 188037304
ERROR in my-proj.core-test/a-test (core_test.clj:4)
Exception: java.lang.IllegalStateException: Can't set!: *warn-on-reflection* from non-binding thread
at clojure.lang.Var.set (Var.java:223)
my_proj.core_test$fn__5128.invokeStatic (core_test.clj:4)
my_proj.core_test/fn (core_test.clj:4)
kaocha.plugin.capture_output$capture_output_pre_test_hook$fn__2642$fn__2643.invoke (capture_output.clj:92)
kaocha.type.var$eval5150$fn__5152$fn__5157.invoke (var.clj:30)
kaocha.type.var$eval5150$fn__5152.invoke (var.clj:27)
...
kaocha.plugin.capture_output$capture_output_wrap_run_hook$fn__2634$fn__2635.invoke (capture_output.clj:83)
...
kaocha.plugin.capture_output$capture_output_wrap_run_hook$fn__2634.doInvoke (capture_output.clj:83)
...
kaocha.testable$run.invokeStatic (testable.clj:119)
kaocha.testable$run.invoke (testable.clj:110)
...
kaocha.testable$run_testable.invokeStatic (testable.clj:189)
kaocha.testable$run_testable.invoke (testable.clj:148)
kaocha.testable$run_testables.invokeStatic (testable.clj:202)
kaocha.testable$run_testables.invoke (testable.clj:192)
...
kaocha.type.ns$run_tests$fn__4998.invoke (ns.clj:21)
...
kaocha.type.ns$run_tests.invokeStatic (ns.clj:21)
kaocha.type.ns$run_tests.invoke (ns.clj:17)
kaocha.type.ns$eval5016$fn__5017.invoke (ns.clj:64)
...
kaocha.plugin.capture_output$capture_output_wrap_run_hook$fn__2634$fn__2635.invoke (capture_output.clj:83)
...
kaocha.plugin.capture_output$capture_output_wrap_run_hook$fn__2634.doInvoke (capture_output.clj:83)
...
kaocha.testable$run.invokeStatic (testable.clj:119)
kaocha.testable$run.invoke (testable.clj:110)
...
kaocha.testable$run_testable.invokeStatic (testable.clj:189)
kaocha.testable$run_testable.invoke (testable.clj:148)
kaocha.testable$run_testables.invokeStatic (testable.clj:202)
kaocha.testable$run_testables.invoke (testable.clj:192)
kaocha.test_suite$run.invokeStatic (test_suite.clj:7)
kaocha.test_suite$run.invoke (test_suite.clj:5)
kaocha.type.clojure.test$eval5085$fn__5086.invoke (test.clj:20)
...
kaocha.plugin.capture_output$capture_output_wrap_run_hook$fn__2634$fn__2635.invoke (capture_output.clj:83)
...
kaocha.plugin.capture_output$capture_output_wrap_run_hook$fn__2634.doInvoke (capture_output.clj:83)
...
kaocha.testable$run.invokeStatic (testable.clj:119)
kaocha.testable$run.invoke (testable.clj:110)
...
kaocha.testable$run_testable.invokeStatic (testable.clj:189)
kaocha.testable$run_testable.invoke (testable.clj:148)
kaocha.testable$run_testables.invokeStatic (testable.clj:202)
kaocha.testable$run_testables.invoke (testable.clj:192)
kaocha.api$run$fn__3133$fn__3134$fn__3135.invoke (api.clj:106)
...
kaocha.api$run$fn__3133$fn__3134.invoke (api.clj:98)
...
kaocha.api$run$fn__3133.invoke (api.clj:97)
...
kaocha.api$run.invokeStatic (api.clj:83)
kaocha.api$run.invoke (api.clj:71)
kaocha.watch$try_run$fn__4894.invoke (watch.clj:50)
kaocha.watch$try_run.invokeStatic (watch.clj:49)
kaocha.watch$try_run.invoke (watch.clj:41)
kaocha.watch$run_loop.invokeStatic (watch.clj:122)
kaocha.watch$run_loop.invoke (watch.clj:116)
kaocha.watch$run_STAR_.invokeStatic (watch.clj:217)
kaocha.watch$run_STAR_.invoke (watch.clj:198)
kaocha.watch$run$fn__4949.invoke (watch.clj:227)
...
java.util.concurrent.FutureTask.run (FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
...
1 tests, 1 assertions, 1 errors, 0 failures.Metadata
Metadata
Assignees
Labels
No labels