From 5f5e76a09bcec225672484e79ae34a593a0854bb Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Sun, 20 Aug 2023 02:20:17 +0200 Subject: [PATCH] kotlin-test-wasm: correct main source sets compilation, KT-61342 - Do not include test sources in main source sets - Extract commonWasm source set that contains code shared between wasm-js and wasm-wasi --- .../kotlin.test/wasm/js/build.gradle.kts | 2 +- .../kotlin.test/wasm/wasi/build.gradle.kts | 2 +- .../src/main/kotlin/wasm/wasmKotlinTest.kt | 41 ++++++++++++++----- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/libraries/kotlin.test/wasm/js/build.gradle.kts b/libraries/kotlin.test/wasm/js/build.gradle.kts index 0fff8cf6e70..c89ca34a16c 100644 --- a/libraries/kotlin.test/wasm/js/build.gradle.kts +++ b/libraries/kotlin.test/wasm/js/build.gradle.kts @@ -7,7 +7,7 @@ plugins { configureWasmKotlinTest( wasmTargetParameter = "wasm-js", wasmTargetAttribute = KotlinWasmTargetAttribute.js, - targetSourceDir = "$rootDir/libraries/kotlin.test/wasm/js/src", + targetSourceDir = "$rootDir/libraries/kotlin.test/wasm/js/src/main/kotlin", stdDependencyName = ":kotlin-stdlib-wasm-js" ) { extensionBody -> kotlin(extensionBody) diff --git a/libraries/kotlin.test/wasm/wasi/build.gradle.kts b/libraries/kotlin.test/wasm/wasi/build.gradle.kts index cc8a9d0d798..53e77b93b70 100644 --- a/libraries/kotlin.test/wasm/wasi/build.gradle.kts +++ b/libraries/kotlin.test/wasm/wasi/build.gradle.kts @@ -7,7 +7,7 @@ plugins { configureWasmKotlinTest( wasmTargetParameter = "wasm-wasi", wasmTargetAttribute = KotlinWasmTargetAttribute.wasi, - targetSourceDir = "$rootDir/libraries/kotlin.test/wasm/wasi/src", + targetSourceDir = "$rootDir/libraries/kotlin.test/wasm/wasi/src/main/kotlin", stdDependencyName = ":kotlin-stdlib-wasm-wasi" ) { extensionBody -> kotlin(extensionBody) diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmKotlinTest.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmKotlinTest.kt index 3b95830fc4f..b5e34976079 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmKotlinTest.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/wasm/wasmKotlinTest.kt @@ -7,6 +7,7 @@ import org.gradle.api.Project import org.gradle.api.tasks.Sync import org.gradle.api.tasks.bundling.Jar import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.named import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.KotlinCompile @@ -15,12 +16,17 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute private fun Project.createCommonMainSources() = tasks.register("commonMainSources", Sync::class.java) { from( - "$rootDir/libraries/kotlin.test/common/src", - "$rootDir/libraries/kotlin.test/annotations-common/src", - "$rootDir/libraries/kotlin.test/wasm/src" + "$rootDir/libraries/kotlin.test/common/src/main/kotlin", + "$rootDir/libraries/kotlin.test/annotations-common/src/main/kotlin", ) into("$buildDir/commonMainSources") } +private fun Project.createCommonWasmSources() = tasks.register("commonWasmSources") { + from( + "$rootDir/libraries/kotlin.test/wasm/src/main/kotlin" + ) + into("$buildDir/commonWasmSources") +} fun Project.configureWasmKotlinTest( wasmTargetParameter: String, @@ -30,6 +36,7 @@ fun Project.configureWasmKotlinTest( withKotlinMPP: (KotlinMultiplatformExtension.() -> Unit) -> Unit ) { val commonMainSources = createCommonMainSources() + val commonWasmSources = createCommonWasmSources() withKotlinMPP { @Suppress("DEPRECATION") @@ -42,17 +49,20 @@ fun Project.configureWasmKotlinTest( } sourceSets { - sourceSets.named("commonMain") { + val commonMain = sourceSets.named("commonMain") { dependencies { api(project(stdDependencyName)) } - kotlin.srcDir(commonMainSources.get().destinationDir) + kotlin.srcDir(commonMainSources) + } + + val commonWasm = sourceSets.create("commonWasm") { + dependsOn(commonMain.get()) + kotlin.srcDir(commonWasmSources) } sourceSets.named("wasmMain") { - dependencies { - api(project(stdDependencyName)) - } + dependsOn(commonWasm) kotlin.srcDir(targetSourceDir) } } @@ -60,8 +70,15 @@ fun Project.configureWasmKotlinTest( tasks.register("sourcesJar") { dependsOn(commonMainSources) archiveClassifier.set("sources") - from(sourceSets["commonMain"].kotlin) - from(sourceSets["wasmMain"].kotlin) + from(sourceSets["commonMain"].kotlin) { + into("commonMain") + } + from(sourceSets["commonWasm"].kotlin) { + into("commonWasm") + } + from(sourceSets["wasmMain"].kotlin) { + into("wasmMain") + } } } @@ -79,6 +96,10 @@ fun Project.configureWasmKotlinTest( dependsOn(commonMainSources) } + tasks.named("wasmJar") { + manifestAttributes(manifest, "Test") + } + tasks.register("emptyJavadocJar") { archiveClassifier.set("javadoc") }