I'm getting this error when trying to test using Kaocha: Wrong number of args (3) passed to: clojure.spec.alpha/amp-impl I've tried changing Clojure version (in deps.edn) as well Kaocha version... but I really don't know why this is happen or where to start digging to figure out... can you, please, point me out some path?
Have you tried Kaocha on another project to help determine if its the Clojure project or Kaocha setup itself?
I usually https://practical.li/clojure/clojure-cli/projects/templates/ and test tools with that to narrow down if it's the tool or the project.
The error suggests to me that the project code (or library dependency) is incorrectly using & with regular expressions and failing during compilation Does all the project code evaluate in the repl without error? Any test runner will fail if the project code doesn't compile correctly.
This is my env: openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) Clojure CLI version 1.11.1.1347
A minimal deps.edn that I've tried, but the error remains:
{:deps {org.clojure/clojure {:mvn/version "1.11.0"} }
:paths ["src" "classes"]
:aliases {:test
{:extra-paths ["test"]
:extra-deps {lambdaisland/kaocha {:mvn/version "1.87.1366"}}
:main-opts ["-m" "kaocha.runner" #_"--watch" #_"--no-capture-output" "--fail-fast"]} }}I'm failing to reproduce this. With this deps.edn, and a single test test/foo_test.clj
(ns foo-test
(:require [clojure.test :refer :all]))
(deftest foo
(is (= 1 2)))
➜ clojure --version ; java -version
Clojure CLI version 1.11.1.1386
openjdk version "11.0.20.1" 2023-08-24
OpenJDK Runtime Environment Temurin-11.0.20.1+1 (build 11.0.20.1+1)
OpenJDK 64-Bit Server VM Temurin-11.0.20.1+1 (build 11.0.20.1+1, mixed mode)
clojure -A:test
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 {}'.
[(F)]
Randomized with --seed 1139706614
FAIL in foo-test/foo (foo_test.clj:5)
Expected:
1
Actual:
-1 +2
1 tests, 1 assertions, 1 failures.
There's clearly more going on here. I see a runner.clj in your stacktrace, for instance.
A git repo that reproduces the issue would be much appreciated.Ah I see in the #testing channel that the issue was resolved, and was indeed not related to kaocha. Glad you figured it out.
Execution error (ArityException) at clojure.core.specs.alpha/fn (alpha.clj:107).
Wrong number of args (3) passed to: clojure.spec.alpha/amp-implThe full error report:
{:clojure.main/message
"Execution error (ArityException) at clojure.core.specs.alpha/fn (alpha.clj:107).\nWrong number of args (3) passed to: clojure.spec.alpha/amp-impl\n",
:clojure.main/triage
{:clojure.error/class clojure.lang.ArityException,
:clojure.error/line 107,
:clojure.error/cause
"Wrong number of args (3) passed to: clojure.spec.alpha/amp-impl",
:clojure.error/symbol clojure.core.specs.alpha/fn,
:clojure.error/source "alpha.clj",
:clojure.error/phase :execution},
:clojure.main/trace
{:via
[{:type clojure.lang.Compiler$CompilerException,
:message
"Syntax error macroexpanding at (kaocha/version_check.clj:1:1).",
:data
{:clojure.error/phase :execution,
:clojure.error/line 1,
:clojure.error/column 1,
:clojure.error/source "kaocha/version_check.clj"},
:at [clojure.lang.Compiler load "Compiler.java" 7665]}
{:type java.lang.ExceptionInInitializerError,
:at [java.lang.Class forName0 "Class.java" -2]}
{:type clojure.lang.ArityException,
:message
"Wrong number of args (3) passed to: clojure.spec.alpha/amp-impl",
:at [clojure.lang.AFn throwArity "AFn.java" 429]}],
:trace
[[clojure.lang.AFn throwArity "AFn.java" 429]
[clojure.lang.AFn invoke "AFn.java" 40]
[clojure.core.specs.alpha$fn__59 invokeStatic "alpha.clj" 107]
[clojure.core.specs.alpha$fn__59 invoke "alpha.clj" 107]
[clojure.core.specs.alpha__init load nil 107]
[clojure.core.specs.alpha__init <clinit> nil -1]
[java.lang.Class forName0 "Class.java" -2]
[java.lang.Class forName "Class.java" 398]
[clojure.lang.RT classForName "RT.java" 2209]
[clojure.lang.RT classForName "RT.java" 2218]
[clojure.lang.RT loadClassForName "RT.java" 2237]
[clojure.lang.RT load "RT.java" 449]
[clojure.lang.RT load "RT.java" 424]
[clojure.lang.Compiler ensureMacroCheck "Compiler.java" 6975]
[clojure.lang.Compiler checkSpecs "Compiler.java" 6987]
[clojure.lang.Compiler macroexpand1 "Compiler.java" 7005]
[clojure.lang.Compiler macroexpand "Compiler.java" 7092]
[clojure.lang.Compiler eval "Compiler.java" 7178]
[clojure.lang.Compiler load "Compiler.java" 7653]
[clojure.lang.RT loadResourceScript "RT.java" 381]
[clojure.lang.RT loadResourceScript "RT.java" 372]
[clojure.lang.RT load "RT.java" 459]
[clojure.lang.RT load "RT.java" 424]
[clojure.core$load$fn__6908 invoke "core.clj" 6161]
[clojure.core$load invokeStatic "core.clj" 6160]
[clojure.core$load doInvoke "core.clj" 6144]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[clojure.core$load_one invokeStatic "core.clj" 5933]
[clojure.core$load_one invoke "core.clj" 5928]
[clojure.core$load_lib$fn__6850 invoke "core.clj" 5975]
[clojure.core$load_lib invokeStatic "core.clj" 5974]
[clojure.core$load_lib doInvoke "core.clj" 5953]
[clojure.lang.RestFn applyTo "RestFn.java" 142]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$load_libs invokeStatic "core.clj" 6016]
[clojure.core$load_libs doInvoke "core.clj" 6000]
[clojure.lang.RestFn applyTo "RestFn.java" 137]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$require invokeStatic "core.clj" 6038]
[clojure.core$require doInvoke "core.clj" 6038]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[user$eval1 invokeStatic "runner.clj" 1]
[user$eval1 invoke "runner.clj" 1]
[clojure.lang.Compiler eval "Compiler.java" 7194]
[clojure.lang.Compiler load "Compiler.java" 7653]
[clojure.lang.RT loadResourceScript "RT.java" 381]
[clojure.lang.RT loadResourceScript "RT.java" 372]
[clojure.lang.RT load "RT.java" 459]
[clojure.lang.RT load "RT.java" 424]
[clojure.core$load$fn__6908 invoke "core.clj" 6161]
[clojure.core$load invokeStatic "core.clj" 6160]
[clojure.core$load doInvoke "core.clj" 6144]
[clojure.lang.RestFn invoke "RestFn.java" 408]
[clojure.core$load_one invokeStatic "core.clj" 5933]
[clojure.core$load_one invoke "core.clj" 5928]
[clojure.core$load_lib$fn__6850 invoke "core.clj" 5975]
[clojure.core$load_lib invokeStatic "core.clj" 5974]
[clojure.core$load_lib doInvoke "core.clj" 5953]
[clojure.lang.RestFn applyTo "RestFn.java" 142]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$load_libs invokeStatic "core.clj" 6016]
[clojure.core$load_libs doInvoke "core.clj" 6000]
[clojure.lang.RestFn applyTo "RestFn.java" 137]
[clojure.core$apply invokeStatic "core.clj" 669]
[clojure.core$require invokeStatic "core.clj" 6038]
[clojure.main$main_opt invokeStatic "main.clj" 514]
[clojure.main$main_opt invoke "main.clj" 510]
[clojure.main$main invokeStatic "main.clj" 664]
[clojure.main$main doInvoke "main.clj" 616]
[clojure.lang.RestFn applyTo "RestFn.java" 137]
[clojure.lang.Var applyTo "Var.java" 705]
[clojure.main main "main.java" 40]],
:cause
"Wrong number of args (3) passed to: clojure.spec.alpha/amp-impl",
:phase :execution}}