diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt index b8251d5529b..17ace8dce79 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt @@ -244,7 +244,15 @@ class CommonizerIT : BaseGradleIT() { @Test fun `test KT-46234 intermediate source set with only one native target`() { + `test single native platform`("commonize-kt-46234-singleNativeTarget") + } + @Test + fun `test KT-46142 standalone native source set`() { + `test single native platform`("commonize-kt-46142-singleNativeTarget") + } + + private fun `test single native platform`(project: String) { val posixInImplementationMetadataConfigurationRegex = Regex(""".*implementationMetadataConfiguration:.*([pP])osix""") val posixInIntransitiveMetadataConfigurationRegex = Regex(""".*intransitiveMetadataConfiguration:.*([pP])osix""") @@ -258,7 +266,7 @@ class CommonizerIT : BaseGradleIT() { line.matches(posixInIntransitiveMetadataConfigurationRegex) } - with(Project("commonize-kt-46234-singleNativeTarget")) { + with(Project(project)) { build(":p1:listNativePlatformMainDependencies", "-Pkotlin.mpp.enableIntransitiveMetadataConfiguration=false") { assertSuccessful() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/build.gradle.kts new file mode 100644 index 00000000000..448f4930cb0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + kotlin("multiplatform") apply false +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/gradle.properties new file mode 100644 index 00000000000..1d227bf1304 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/gradle.properties @@ -0,0 +1,3 @@ +kotlin.mpp.enableGranularSourceSetsMetadata=true +kotlin.native.enableDependencyPropagation=false +kotlin.mpp.enableIntransitiveMetadataConfiguration=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/p1/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/p1/build.gradle.kts new file mode 100644 index 00000000000..96641f459b3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/p1/build.gradle.kts @@ -0,0 +1,62 @@ +import org.jetbrains.kotlin.com.intellij.openapi.util.SystemInfo.* +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet + +operator fun KotlinSourceSet.invoke(builder: SourceSetHierarchyBuilder.() -> Unit): KotlinSourceSet { + SourceSetHierarchyBuilder(this).builder() + return this +} + +class SourceSetHierarchyBuilder(private val node: KotlinSourceSet) { + operator fun KotlinSourceSet.unaryMinus() = this.dependsOn(node) +} + +plugins { + kotlin("multiplatform") +} + +kotlin { + + val nativePlatform = when { + isMac -> macosX64("nativePlatform") + isLinux -> linuxX64("nativePlatform") + isWindows -> mingwX64("nativePlatform") + else -> throw IllegalStateException("Unsupported host") + } + + jvm() + + val commonMain by sourceSets.getting + val jvmMain by sourceSets.getting + val nativePlatformMain by sourceSets.getting + + commonMain { + -jvmMain + -nativePlatformMain + } + + tasks.register("listNativePlatformMainDependencies") { + doLast { + + val implementationMetadataConfigurationDependencies = project.configurations.getByName( + nativePlatformMain.implementationMetadataConfigurationName + ).files + + val intransitiveMetadataConfigurationDependencies = project.configurations.findByName( + "nativePlatformMainIntransitiveDependenciesMetadata" + )?.files.orEmpty() + + val dependencies = implementationMetadataConfigurationDependencies + + intransitiveMetadataConfigurationDependencies + + logger.quiet("NativePlatformMainDependency | Count: ${dependencies.size}") + + implementationMetadataConfigurationDependencies.forEach { dependencyFile -> + logger.quiet("implementationMetadataConfiguration: ${dependencyFile.path}") + } + + intransitiveMetadataConfigurationDependencies.forEach { dependencyFile -> + logger.quiet("intransitiveMetadataConfiguration: ${dependencyFile.path}") + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/p1/src/nativePlatformMain/kotlin/NativePlatformMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/p1/src/nativePlatformMain/kotlin/NativePlatformMain.kt new file mode 100644 index 00000000000..66907b37b4f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/p1/src/nativePlatformMain/kotlin/NativePlatformMain.kt @@ -0,0 +1,7 @@ +@file:Suppress("unused") + +import platform.posix.usleep + +fun main() { + usleep(100) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/settings.gradle.kts new file mode 100644 index 00000000000..ac06873d297 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-46142-singleNativeTarget/settings.gradle.kts @@ -0,0 +1,12 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + } + val kotlin_version: String by settings + plugins { + kotlin("multiplatform").version(kotlin_version) + } +} + +include(":p1") \ No newline at end of file