diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index c6852ff38a4..15db6ee5f28 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -819,44 +819,62 @@ class NewMultiplatformIT : BaseGradleIT() { } @Test - fun testCinterop() = with(Project("new-mpp-native-cinterop", gradleVersion)) { - val host = nativeHostTargetName - build(":projectLibrary:build") { + fun testCinterop() { + val libProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app") + libProject.build("publish") { assertSuccessful() - assertTasksExecuted(":projectLibrary:cinteropStdio${host.capitalize()}") - assertTrue(output.contains("Project test"), "No test output found") - assertFileExists("projectLibrary/build/classes/kotlin/$host/main/projectLibrary-cinterop-stdio.klib") } + val repo = libProject.projectDir.resolve("repo").absolutePath.replace('\\', '/') - build(":publishedLibrary:build", ":publishedLibrary:publish") { - assertSuccessful() - assertTasksExecuted(":publishedLibrary:cinteropStdio${host.capitalize()}") - assertTrue(output.contains("Published test"), "No test output found") - assertFileExists("publishedLibrary/build/classes/kotlin/$host/main/publishedLibrary-cinterop-stdio.klib") - assertFileExists("repo/org/example/publishedLibrary-$host/1.0/publishedLibrary-$host-1.0-cinterop-stdio.klib") - } + with(Project("new-mpp-native-cinterop", gradleVersion)) { - build(":build") { - assertSuccessful() - assertTrue(output.contains("Dependent: Project print"), "No test output found") - assertTrue(output.contains("Dependent: Published print"), "No test output found") - } + setupWorkingDir() + listOf(gradleBuildScript(), gradleBuildScript("publishedLibrary")).forEach { + it.appendText(""" + repositories { + maven { url '$repo' } + } + """.trimIndent()) + } - // Check that changing the compiler version in properties causes interop reprocessing and source recompilation. - build(":projectLibrary:build") { - assertSuccessful() - assertTasksUpToDate( - ":projectLibrary:cinteropStdio${host.capitalize()}", - ":projectLibrary:compileKotlin${host.capitalize()}" - ) - } + val host = nativeHostTargetName + build(":projectLibrary:build") { + assertSuccessful() + assertTasksExecuted(":projectLibrary:cinteropStdio${host.capitalize()}") + assertTrue(output.contains("Project test"), "No test output found") + assertFileExists("projectLibrary/build/classes/kotlin/$host/main/projectLibrary-cinterop-stdio.klib") + } - build(":projectLibrary:build", "-Porg.jetbrains.kotlin.native.version=0.9.2") { - assertSuccessful() - assertTasksExecuted( - ":projectLibrary:cinteropStdio${host.capitalize()}", - ":projectLibrary:compileKotlin${host.capitalize()}" - ) + build(":publishedLibrary:build", ":publishedLibrary:publish") { + assertSuccessful() + assertTasksExecuted(":publishedLibrary:cinteropStdio${host.capitalize()}") + assertTrue(output.contains("Published test"), "No test output found") + assertFileExists("publishedLibrary/build/classes/kotlin/$host/main/publishedLibrary-cinterop-stdio.klib") + assertFileExists("repo/org/example/publishedLibrary-$host/1.0/publishedLibrary-$host-1.0-cinterop-stdio.klib") + } + + build(":build") { + assertSuccessful() + assertTrue(output.contains("Dependent: Project print"), "No test output found") + assertTrue(output.contains("Dependent: Published print"), "No test output found") + } + + // Check that changing the compiler version in properties causes interop reprocessing and source recompilation. + build(":projectLibrary:build") { + assertSuccessful() + assertTasksUpToDate( + ":projectLibrary:cinteropStdio${host.capitalize()}", + ":projectLibrary:compileKotlin${host.capitalize()}" + ) + } + + build(":projectLibrary:build", "-Porg.jetbrains.kotlin.native.version=0.9.2") { + assertSuccessful() + assertTasksExecuted( + ":projectLibrary:cinteropStdio${host.capitalize()}", + ":projectLibrary:compileKotlin${host.capitalize()}" + ) + } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/build.gradle index a982b134ee0..242ee761e90 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/build.gradle @@ -12,7 +12,11 @@ repositories { kotlin { sourceSets { - allNative + allNative { + dependencies { + implementation 'com.example:sample-lib:1.0' + } + } nativeTest macos64Main { dependsOn sourceSets.allNative } @@ -41,7 +45,6 @@ kotlin { } - publishing { repositories { maven { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt index 0dfaf366fba..1471fcd0c4c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt @@ -6,7 +6,9 @@ package example.cinterop.published import example.cinterop.published.stdio.* +import com.example.lib.* fun publishedPrint(str: String) { printf(str + '\n') + println(id(42)) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 878ea86501d..c6d94c41853 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -705,7 +705,7 @@ open class KotlinNativeTargetConfigurator( usesPlatformOf(target) isVisible = false isCanBeConsumed = false - attributes.attribute(USAGE_ATTRIBUTE, compilation.target.project.usageByName(Usage.JAVA_API)) + attributes.attribute(USAGE_ATTRIBUTE, compilation.target.project.usageByName(KotlinUsages.KOTLIN_API)) description = "Dependencies for cinterop '${cinterop.name}' (compilation '${compilation.name}')." } }