Hi! We're blocked by <https://github.com/kotest/ko...
# kotest
b
Hi! We're blocked by https://github.com/kotest/kotest/issues/4895, as we really need to have tests running on all targets with the latest Kotlin EAP. Does anyone familiar with the Kotest Codebase have any pointers as to why only the JVM runner ist currently working?
c
Do you use the Kotest Gradle plugin?
Copy code
plugins {
    id("io.kotest.multiplatform") version "6.0.0.M4"
}
b
I'm using a local build from the latest master. Every release I'm aware of still erroneously pulls an 5.9.1 module that doesn't work with the latest Kotlin (see the closed Kotest PR 4871), which was merged only after M4. The problem is that the new modules (which, I assume) was supposed to have been in use for months, never actually was used and is just broken on everything but the JVM. See also the open Kotest PR 4893)
s
Might be a local build issue. Try using the snapshot versions?
b
you mean the snapshot published to the sonatype snapshot repo? because there was no new milsteone build since the fix
s
Every build of main has a run number on github actions, each of those are published to the snapshot repo, you don't have to wait for a tagged M# build to be released you can use a pre-built one from main: https://s01.oss.sonatype.org/content/repositories/snapshots/io/kotest/multiplatform/io.kotest.multiplatform.gradle.plugin/
The latest is #1910.
image.png
b
Thanks, I just wanted to make sure I was understanding correctly
s
Np, hope it helps.
b
Ok so it was a local issue, however, It still does not run with the latest snapshot ans Kotlin 2.2.0: https://github.com/a-sit-plus/signum/actions/runs/15944818128/job/44977515428 The dependencies of the failing build seem clean (as in: no other Kotest versions polluting the classpath):
Copy code
iosSimulatorArm64TestCompileKlibraries - Compile classpath for 'iosSimulatorArm64/test'.
+--- project :indispensable-asn1
|    +--- org.jetbrains.kotlinx:kotlinx-io-core:0.5.4
|    |    \--- org.jetbrains.kotlinx:kotlinx-io-core-iossimulatorarm64:0.5.4
|    |         +--- org.jetbrains.kotlinx:kotlinx-io-bytestring:0.5.4
|    |         |    \--- org.jetbrains.kotlinx:kotlinx-io-bytestring-iossimulatorarm64:0.5.4
|    |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.2.0
|    |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.2.0
|    +--- at.asitplus:kmmresult:1.9.3
|    |    \--- at.asitplus:kmmresult-iossimulatorarm64:1.9.3
|    |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.0
|    +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1
|    |    \--- org.jetbrains.kotlinx:kotlinx-serialization-json-iossimulatorarm64:1.8.1
|    |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.0
|    |         \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1
|    |              \--- org.jetbrains.kotlinx:kotlinx-serialization-core-iossimulatorarm64:1.8.1
|    |                   \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.0
|    +--- org.jetbrains.kotlinx:kotlinx-datetime:0.6.2
|    |    \--- org.jetbrains.kotlinx:kotlinx-datetime-iossimulatorarm64:0.6.2
|    |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.2.0
|    |         \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2 -> 1.8.1 (*)
|    \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0
+--- at.asitplus:multibase:1.2.2
|    \--- at.asitplus:multibase-iossimulatorarm64:1.2.2
|         +--- io.matthewnelson.encoding:base64:2.4.0
|         |    \--- io.matthewnelson.encoding:base64-iossimulatorarm64:2.4.0
|         |         +--- io.matthewnelson.encoding:core:2.4.0
|         |         |    \--- io.matthewnelson.encoding:core-iossimulatorarm64:2.4.0
|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.0
|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.0
|         +--- io.matthewnelson.encoding:base32:2.4.0
|         |    \--- io.matthewnelson.encoding:base32-iossimulatorarm64:2.4.0
|         |         +--- io.matthewnelson.encoding:core:2.4.0 (*)
|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.0
|         +--- io.matthewnelson.encoding:base16:2.4.0
|         |    \--- io.matthewnelson.encoding:base16-iossimulatorarm64:2.4.0
|         |         +--- io.matthewnelson.encoding:core:2.4.0 (*)
|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.0
|         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.2.0
|         \--- com.ionspin.kotlin:bignum:0.3.10
|              \--- com.ionspin.kotlin:bignum-iossimulatorarm64:0.3.10
|                   \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.2.0
+--- com.ionspin.kotlin:bignum:0.3.10 (*)
+--- org.kotlincrypto.random:crypto-rand:0.5.0
|    \--- org.kotlincrypto.random:crypto-rand-iossimulatorarm64:0.5.0
|         +--- org.kotlincrypto:error:0.3.0
|         |    \--- org.kotlincrypto:error-iossimulatorarm64:0.3.0
|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.0
|         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 -> 2.2.0
+--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0
+--- project :internals
|    \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0
+--- io.kotest:kotest-property:6.0.0-SNAPSHOT
|    \--- io.kotest:kotest-property-iossimulatorarm64:6.0.0-SNAPSHOT
|         +--- io.kotest:kotest-common:6.0.0-SNAPSHOT
|         |    \--- io.kotest:kotest-common-iossimulatorarm64:6.0.0-SNAPSHOT
|         |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.0
|         |         +--- org.jetbrains.kotlin:kotlin-reflect -> 2.2.0
|         |         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.0
|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0
|         |         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-iossimulatorarm64:1.8.0
|         |         |         +--- org.jetbrains.kotlinx:atomicfu:0.23.1
|         |         |         |    \--- org.jetbrains.kotlinx:atomicfu-iossimulatorarm64:0.23.1
|         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.2.0
|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.2.0
|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0
|         |         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-test-iossimulatorarm64:1.8.0
|         |         |         +--- org.jetbrains.kotlinx:atomicfu:0.23.1 (*)
|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.2.0
|         |         \--- org.jetbrains.kotlin:kotlin-reflect:2.1.0 -> 2.2.0 (c)
|         +--- io.kotest:kotest-assertions-shared:6.0.0-SNAPSHOT
|         |    \--- io.kotest:kotest-assertions-shared-iossimulatorarm64:6.0.0-SNAPSHOT
|         |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.0
|         |         +--- org.jetbrains.kotlin:kotlin-reflect -> 2.2.0 (*)
|         |         +--- io.kotest:kotest-common:6.0.0-SNAPSHOT (*)
|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
|         |         \--- org.jetbrains.kotlin:kotlin-reflect:2.1.0 -> 2.2.0 (c)
|         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.0
|         +--- org.jetbrains.kotlin:kotlin-reflect -> 2.2.0 (*)
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
|         \--- org.jetbrains.kotlin:kotlin-reflect:2.1.0 -> 2.2.0 (c)
+--- org.jetbrains.kotlin:kotlin-reflect -> 2.2.0 (*)
+--- io.kotest:kotest-assertions-core:6.0.0-SNAPSHOT
|    \--- io.kotest:kotest-assertions-core-iossimulatorarm64:6.0.0-SNAPSHOT
|         +--- io.kotest:kotest-assertions-shared:6.0.0-SNAPSHOT (*)
|         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.0
|         +--- org.jetbrains.kotlin:kotlin-reflect -> 2.2.0 (*)
|         +--- io.kotest:kotest-common:6.0.0-SNAPSHOT (*)
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
|         \--- org.jetbrains.kotlin:kotlin-reflect:2.1.0 -> 2.2.0 (c)
+--- io.kotest:kotest-common:6.0.0-SNAPSHOT (*)
+--- io.kotest:kotest-framework-engine:6.0.0-SNAPSHOT
|    \--- io.kotest:kotest-framework-engine-iossimulatorarm64:6.0.0-SNAPSHOT
|         +--- io.kotest:kotest-assertions-shared:6.0.0-SNAPSHOT (*)
|         +--- io.kotest:kotest-common:6.0.0-SNAPSHOT (*)
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.8.0
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0 (*)
|         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.2.0
|         +--- org.jetbrains.kotlin:kotlin-reflect -> 2.2.0 (*)
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0 (*)
|         \--- org.jetbrains.kotlin:kotlin-reflect:2.1.0 -> 2.2.0 (c)
\--- org.jetbrains.kotlin:kotlin-reflect:2.2.0 (c)
Same for the build environment (
./gradlew buildEnvironment
), which I cannot post here, as it exceeds the maximum message size. Any help is appreciated, because Kotest keeps us from testing with Kotlin 2.2.0 since the very first EAP release and I really am at my whit's end
Turns out: the latest snapshot is broken
s
you're using an old snapshot
b
older snapshots work, the latest one is borked
s
The latest is kotestVersion=6.0.0.1910-SNAPSHOT
and I dont see in your repo where you're even getting the latest snapshots from, but its possible they're getting cross posted. Here's the repo with the snapshots:
maven("<https://s01.oss.sonatype.org/content/repositories/snapshots>")
b
getting theme from there. (where else would they be?)
the very latest snapshot version is producing precicely this problem. the snapshot form june 6 is at least runnign
i am still waiting to know whether native tests are acutally run
s
If you could publish gradle build scans that might be helpful
b
i can, but right now, it is definitely down to the latest snapshot being broken and i am waiting for the local run with the june 6 snapshot to complete
thanks for the help so far! I'll keep you posted.
also: fixing the borked paths would be really awesome: https://github.com/kotest/kotest/pull/4893. I'm still getting paths like these created: signum/indispensable/src/commonTest/kotlin/*Asn1AddonsTest.ktjsTest*/kotlin
the june 6 snapshot says everything's green, but no tests are ever acurally run, just as with my local build
any confirmed working snapshot?
s
Try a clean and add build scans. Theyre shareable and free. https://docs.gradle.org/current/userguide/build_scans.html
b
with which snapshot version?
s
you can also add
--no-build-cache
to force a full run ignoring any optimizations
b
what exact snapshot build are you interested in?
(ok probalby not really a conflicting overlad but a remnant from the old run, because the generated kotlin sources in dodgy locations)
(sorry for the duplicated messages! spotty internet connection)
I've just now manually specified the latest snapshot version (why was "-SNAPSHOT" not enough!?) native tests are not run (as in: everything looks green until you open an empty test report. (still finishing locally, as I am typing this. will take a bit) This holds true for all targets except for the JVM. am I missing something in my project setup? any dependency to have a working test runner? I'll post the build scan, once it is ready
Well, I cannot deliver a build scan, because it does not compile. the conflicting overloads are apparently not due to remnants from previous runs, but that's just what happens when you execute
build
due to the the source files being generated to run stuff on JS (and #4839)
The latest run also fails due the dodgy generation of kotlin sources: https://github.com/a-sit-plus/signum/actions/runs/15946029718/job/44980188192 And I maintain that only the JVM tests are actually run. what is my project setup missing that is specific to kotest >6.0.0.M3 and Kotlin 2.2.0? I am not mad that things have been broken for so long. It's just frustrating to repeatedly feel close to a solution just to realise that there's actually no progress being made. I'd really appreciate someone else cloning signum (branch tmp/kotestRepro), trying with Kotlin 2.2.0 and whichever kotest version is supposed to work. Here's the conventions plugin in use: https://github.com/a-sit-plus/gradle-conventions-plugin.