Repository navigation
build: keep kotlinx-coroutines-test out of the published runtime - #264
Merged
kdroidFilter merged 1 commit intoNov 10, 2026
Merged
Conversation
commonMain declared kotlinx-coroutines-test as an implementation dependency, so every consumer got the test library on its runtime classpath. No main source uses it; the test source sets (androidUnitTest, jvmTest, iosTest, wasmJsTest) already declare it themselves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
I've run into this issue while testing by hand, and this is the fix Opus 5.5 recommends. |
linster
added a commit
to linster/e39-rpi
that referenced
this pull request
Nov 10, 2026
composemediaplayer 0.10.0 (composemediaplayer-jvm) has kotlinx-coroutines-test as a runtime dependency (kdroidFilter/ComposeMediaPlayer#264, not in a release yet). kotlinx-coroutines-test and kotlinx-coroutines-swing both register a main dispatcher in META-INF/services/kotlinx.coroutines.internal.MainDispatcherFactory. packageUberJarForCurrentOs keeps only one copy of that file, and it was the test one, so in the uber jar Dispatchers.Main resolved to TestMainDispatcherFactory, which had nothing to delegate to: java.lang.IllegalStateException: Dispatchers.Main was accessed when the platform dispatcher was absent at kotlinx.coroutines.test.internal.TestMainDispatcherJvmKt.reportMissingMainCoroutineDispatcher ... at io.github.kdroidfilter.composemediaplayer.linux.LinuxVideoPlayerState$openUri$3.invokeSuspend(LinuxVideoPlayerState.kt:234) Opening a video in the video player crashed this way (blank screen). It works from IntelliJ because there the jars stay separate and both service files are visible. Any Dispatchers.Main use in the uber jar was affected. Exclude kotlinx-coroutines-test(-jvm) from composemediaplayer until a release with the fix is available; desktopRuntimeClasspath then only has kotlinx-coroutines-swing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
commonMaindeclareskotlinx-coroutines-testas animplementationdependency, so every consumer of the library gets the test library on its runtime classpath. No main source uses it.Fix
Drop it from
commonMain. The test source sets (androidUnitTest,jvmTest,iosTest,wasmJsTest) already declare it.Testing
:mediaplayer:compileKotlinJvm,:mediaplayer:compileTestKotlinJvmand:mediaplayer:compileReleaseKotlinAndroidpass.Prepared with an AI coding assistant (Claude Code) while integrating the library into a macOS desktop app, and tested as described above. Happy to adjust, split or drop anything that does not fit the project.
🤖 Generated with Claude Code