diff --git a/.circleci/config.yml b/.circleci/config.yml index 7413e020..972ead41 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -97,7 +97,7 @@ jobs: gradle-{{ checksum ".circleci/gradle_cache_seed" }}-{{ checksum ".circleci/config.yml" }}-windows - run: - command: ./gradlew --no-daemon build -x wasmNodeTest + command: ./gradlew --no-daemon build -x wasmJsNodeTest -x wasmWasiNodeTest shell: bash.exe - save_cache: paths: diff --git a/assertk/build.gradle.kts b/assertk/build.gradle.kts index c3ae5f6e..f95cf970 100644 --- a/assertk/build.gradle.kts +++ b/assertk/build.gradle.kts @@ -1,7 +1,5 @@ -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.TEST_COMPILATION_NAME import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.common -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.wasm plugins { id("assertk.multiplatform") @@ -23,15 +21,6 @@ kotlin { withJava() } - @OptIn(ExperimentalKotlinGradlePluginApi::class) - applyDefaultHierarchyTemplate { - group("coroutines") { - withNative() - withJs() - withJvm() - } - } - sourceSets { commonMain { dependencies { @@ -56,11 +45,19 @@ kotlin { } } - val coroutinesTest by getting { + val coroutinesTest by creating { + dependsOn(commonTest.get()) dependencies { implementation(libs.kotlinx.coroutines) implementation(libs.kotlinx.coroutines.test) } } + targets.configureEach { + if (platformType != common && name != "wasmWasi") { + compilations.getByName(TEST_COMPILATION_NAME) + .defaultSourceSet + .dependsOn(coroutinesTest) + } + } } } diff --git a/assertk/src/wasmJsMain/kotlin/assertk/ThreadLocalRef.kt b/assertk/src/wasmMain/kotlin/assertk/ThreadLocalRef.kt similarity index 100% rename from assertk/src/wasmJsMain/kotlin/assertk/ThreadLocalRef.kt rename to assertk/src/wasmMain/kotlin/assertk/ThreadLocalRef.kt diff --git a/assertk/src/wasmJsMain/kotlin/assertk/assertions/support/support.kt b/assertk/src/wasmMain/kotlin/assertk/assertions/support/support.kt similarity index 100% rename from assertk/src/wasmJsMain/kotlin/assertk/assertions/support/support.kt rename to assertk/src/wasmMain/kotlin/assertk/assertions/support/support.kt diff --git a/assertk/src/wasmJsMain/kotlin/assertk/failure.kt b/assertk/src/wasmMain/kotlin/assertk/failure.kt similarity index 100% rename from assertk/src/wasmJsMain/kotlin/assertk/failure.kt rename to assertk/src/wasmMain/kotlin/assertk/failure.kt diff --git a/assertk/src/wasmJsMain/kotlin/assertk/showError.kt b/assertk/src/wasmMain/kotlin/assertk/showError.kt similarity index 100% rename from assertk/src/wasmJsMain/kotlin/assertk/showError.kt rename to assertk/src/wasmMain/kotlin/assertk/showError.kt diff --git a/assertk/src/wasmJsTest/kotlin/test/assertk/assertions/support/WasmJsSupportTest.kt b/assertk/src/wasmTest/kotlin/test/assertk/assertions/support/WasmJsSupportTest.kt similarity index 100% rename from assertk/src/wasmJsTest/kotlin/test/assertk/assertions/support/WasmJsSupportTest.kt rename to assertk/src/wasmTest/kotlin/test/assertk/assertions/support/WasmJsSupportTest.kt diff --git a/assertk/src/wasmJsTest/kotlin/test/assertk/exceptionName.kt b/assertk/src/wasmTest/kotlin/test/assertk/exceptionName.kt similarity index 100% rename from assertk/src/wasmJsTest/kotlin/test/assertk/exceptionName.kt rename to assertk/src/wasmTest/kotlin/test/assertk/exceptionName.kt diff --git a/assertk/src/wasmJsTest/kotlin/test/assertk/runTest.kt b/assertk/src/wasmWasiTest/kotlin/test/assertk/runTest.kt similarity index 100% rename from assertk/src/wasmJsTest/kotlin/test/assertk/runTest.kt rename to assertk/src/wasmWasiTest/kotlin/test/assertk/runTest.kt diff --git a/buildSrc/src/main/kotlin/assertk.multiplatform.gradle.kts b/buildSrc/src/main/kotlin/assertk.multiplatform.gradle.kts index 1160b0b5..384fc1b5 100644 --- a/buildSrc/src/main/kotlin/assertk.multiplatform.gradle.kts +++ b/buildSrc/src/main/kotlin/assertk.multiplatform.gradle.kts @@ -43,10 +43,11 @@ kotlin { } } } - // TODO Remove conditional once coroutines ships a version with WASM target. - if (project.path != ":assertk-coroutines") { + // TODO Remove conditional once coroutines ships a version with WASI target. + val hasWasmWasi = project.path != ":assertk-coroutines" + if (hasWasmWasi) { @OptIn(ExperimentalWasmDsl::class) - wasmJs { + wasmWasi { nodejs() } } @@ -71,6 +72,26 @@ kotlin { androidNativeArm64() androidNativeX86() androidNativeX64() + + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + nodejs() + } + + applyDefaultHierarchyTemplate() + + // The above does not yet create a common Wasm source set, so build our own. + // https://youtrack.jetbrains.com/issue/KT-61988 + sourceSets { + val wasmMain by creating + val wasmTest by creating + named("wasmJsMain") { dependsOn(wasmMain) } + named("wasmJsTest") { dependsOn(wasmTest) } + if (hasWasmWasi) { + named("wasmWasiMain") { dependsOn(wasmMain) } + named("wasmWasiTest") { dependsOn(wasmTest) } + } + } } tasks.withType { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d9b01eb9..54b49803 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] assertk = "1.0.0-SNAPSHOT" kotlin = "1.9.21" -kotlinx-coroutines = "1.7.3" +kotlinx-coroutines = "1.8.0" [libraries] kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } dokka-gradle = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version = "1.9.10" }