kaocha

lread 2024-04-21T15:57:36.534479Z

Hiya! I've just tried bumping kaocha to the current release (v1.88.1376) and see that kaocha might no longer be compatible with clojure 1.9? I'll elaborate in thread.

lread 2024-04-21T16:00:03.370879Z

Given empty folder with deps.edn:

{:deps {org.clojure/clojure {:mvn/version "1.9.0"} }
 :aliases
 {:test {:extra-deps {lambdaisland/kaocha {:mvn/version "1.88.1376"}}
         :main-opts ["-m" "kaocha.runner"]}}}
If I run:
clojure -M:test
I see:
Exception in thread "main" java.lang.ClassCastException: class clojure.lang.Var cannot be cast to class java.lang.String (clojure.lang.Var is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap'), compiling:(clojure/core/specs/alpha.clj:4:1), compiling:(kaocha/version_check.clj:1:1)
	at clojure.lang.Compiler.checkSpecs(Compiler.java:6891)
	at clojure.lang.Compiler.macroexpand1(Compiler.java:6907)
	at clojure.lang.Compiler.macroexpand(Compiler.java:6972)
	at clojure.lang.Compiler.eval(Compiler.java:7046)
	at clojure.lang.Compiler.load(Compiler.java:7514)
	at clojure.lang.RT.loadResourceScript(RT.java:379)
	at clojure.lang.RT.loadResourceScript(RT.java:370)
	at clojure.lang.RT.load(RT.java:460)
	at clojure.lang.RT.load(RT.java:426)
	at clojure.core$load$fn__6548.invoke(core.clj:6046)
	at clojure.core$load.invokeStatic(core.clj:6045)
	at clojure.core$load.doInvoke(core.clj:6029)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5848)
	at clojure.core$load_one.invoke(core.clj:5843)
	at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
	at clojure.core$load_lib.invokeStatic(core.clj:5887)
	at clojure.core$load_lib.doInvoke(core.clj:5868)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$load_libs.invokeStatic(core.clj:5925)
	at clojure.core$load_libs.doInvoke(core.clj:5909)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$require.invokeStatic(core.clj:5947)
	at clojure.core$require.doInvoke(core.clj:5947)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at user$eval11.invokeStatic(runner.clj:1)
	at user$eval11.invoke(runner.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:7062)
	at clojure.lang.Compiler.load(Compiler.java:7514)
	at clojure.lang.RT.loadResourceScript(RT.java:379)
	at clojure.lang.RT.loadResourceScript(RT.java:370)
	at clojure.lang.RT.load(RT.java:460)
	at clojure.lang.RT.load(RT.java:426)
	at clojure.core$load$fn__6548.invoke(core.clj:6046)
	at clojure.core$load.invokeStatic(core.clj:6045)
	at clojure.core$load.doInvoke(core.clj:6029)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5848)
	at clojure.core$load_one.invoke(core.clj:5843)
	at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
	at clojure.core$load_lib.invokeStatic(core.clj:5887)
	at clojure.core$load_lib.doInvoke(core.clj:5868)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$load_libs.invokeStatic(core.clj:5925)
	at clojure.core$load_libs.doInvoke(core.clj:5909)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$require.invokeStatic(core.clj:5947)
	at clojure.main$main_opt.invokeStatic(main.clj:317)
	at clojure.main$main_opt.invoke(main.clj:313)
	at clojure.main$main.invokeStatic(main.clj:424)
	at clojure.main$main.doInvoke(main.clj:387)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.main.main(main.java:37)
Caused by: java.lang.ClassCastException: class clojure.lang.Var cannot be cast to class java.lang.String (clojure.lang.Var is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap'), compiling:(clojure/core/specs/alpha.clj:4:1)
	at clojure.lang.Compiler.load(Compiler.java:7526)
	at clojure.lang.RT.loadResourceScript(RT.java:379)
	at clojure.lang.RT.loadResourceScript(RT.java:370)
	at clojure.lang.RT.load(RT.java:460)
	at clojure.lang.RT.load(RT.java:426)
	at clojure.lang.Compiler.ensureMacroCheck(Compiler.java:6877)
	at clojure.lang.Compiler.checkSpecs(Compiler.java:6889)
	... 57 more
Caused by: java.lang.ClassCastException: class clojure.lang.Var cannot be cast to class java.lang.String (clojure.lang.Var is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
	at clojure.core$symbol.invokeStatic(core.clj:579)
	at clojure.core$symbol.invoke(core.clj:574)
	at clojure.spec.alpha$__GT_sym.invokeStatic(alpha.clj:309)
	at clojure.spec.alpha$__GT_sym.invoke(alpha.clj:305)
	at clojure.spec.alpha$res.invokeStatic(alpha.clj:323)
	at clojure.spec.alpha$res.invoke(alpha.clj:320)
	at clojure.spec.alpha$res$fn__1883.invoke(alpha.clj:324)
	at clojure.walk$walk.invokeStatic(walk.clj:50)
	at clojure.walk$postwalk.invokeStatic(walk.clj:52)
	at clojure.walk$postwalk.invoke(walk.clj:52)
	at clojure.core$partial$fn__5561.invoke(core.clj:2616)
	at clojure.core$map$fn__5587.invoke(core.clj:2747)
	at clojure.lang.LazySeq.sval(LazySeq.java:40)
	at clojure.lang.LazySeq.seq(LazySeq.java:49)
	at clojure.lang.RT.seq(RT.java:528)
	at clojure.core$seq__5124.invokeStatic(core.clj:137)
	at clojure.core$apply.invokeStatic(core.clj:652)
	at clojure.walk$walk.invokeStatic(walk.clj:44)
	at clojure.walk$postwalk.invokeStatic(walk.clj:52)
	at clojure.walk$postwalk.invoke(walk.clj:52)
	at clojure.spec.alpha$res.invokeStatic(alpha.clj:324)
	at clojure.spec.alpha$res.invoke(alpha.clj:320)
	at clojure.spec.alpha$def.invokeStatic(alpha.clj:354)
	at clojure.spec.alpha$def.invoke(alpha.clj:347)
	at clojure.lang.AFn.applyToHelper(AFn.java:165)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.lang.Compiler.macroexpand1(Compiler.java:6912)
	at clojure.lang.Compiler.macroexpand(Compiler.java:6972)
	at clojure.lang.Compiler.eval(Compiler.java:7046)
	at clojure.lang.Compiler.load(Compiler.java:7514)
	... 63 more

lread 2024-04-21T16:01:30.428529Z

If I bump deps.edn clojure version to 1.10.3 same test yields an expected:

WARNING: Did not load a configuration file and using the defaults.
This is fine for experimenting, but for long-term use, we recommend creating a configuration file to avoid changes in behavior between releases.
To create a configuration file using the current defaults and configuration file location, create a file named tests.edn that contains '#kaocha/v1 {}'.
WARNING: In :test-paths, no such file or directory: test
WARNING: No tests were found. This may be an issue in your Kaocha test configuration. To investigate, check the :test-paths and :ns-patterns keys in tests.edn.

lread 2024-04-21T16:03:04.703589Z

Leaving clojure version at 1.9.0 and downgrading kaocha to previous release of 1.87.1366 also works fine.

lread 2024-04-21T16:05:09.866599Z

If new min clojure version is 1.10 that seems fine, but kaocha README currently states "Kaocha requires Clojure 1.9 or later."

lread 2024-04-21T16:05:38.825359Z

Happy to transcribe the above to a git issue if that is helpful.

plexus 2024-04-22T05:08:05.160779Z

that's certainly not intentional, not sure from skimming the above what's going on. A git issue would be appreciated.

lread 2024-04-22T13:57:52.215279Z

Thanks for following up! Here's an issue for you https://github.com/lambdaisland/kaocha/issues/433