[Gradle] Implement integration test to cover ^KT-48138
This commit is contained in:
committed by
Space
parent
c07dcb27df
commit
9a39b1f4d1
+17
@@ -566,6 +566,23 @@ class CommonizerIT : BaseGradleIT() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test KT-48138 commonizing c-interops when nativeTest and nativeMain have different targets`() {
|
||||||
|
with(Project("commonize-kt-48138-nativeMain-nativeTest-different-targets")) {
|
||||||
|
reportSourceSetCommonizerDependencies(this) {
|
||||||
|
val nativeMain = getCommonizerDependencies("nativeMain")
|
||||||
|
nativeMain.onlyCInterops().assertDependencyFilesMatches(".*cinterop-dummy")
|
||||||
|
nativeMain.onlyNativeDistribution().assertNotEmpty()
|
||||||
|
nativeMain.assertTargetOnAllDependencies(CommonizerTarget(LINUX_X64, LINUX_ARM64, LINUX_ARM32_HFP))
|
||||||
|
|
||||||
|
val nativeTest = getCommonizerDependencies("nativeTest")
|
||||||
|
nativeTest.onlyNativeDistribution().assertNotEmpty()
|
||||||
|
nativeTest.onlyCInterops().assertDependencyFilesMatches(".*cinterop-dummy")
|
||||||
|
nativeTest.assertTargetOnAllDependencies(CommonizerTarget(LINUX_X64, LINUX_ARM64))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun preparedProject(name: String): Project {
|
private fun preparedProject(name: String): Project {
|
||||||
return Project(name).apply {
|
return Project(name).apply {
|
||||||
setupWorkingDir()
|
setupWorkingDir()
|
||||||
|
|||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||||
|
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
linuxX64()
|
||||||
|
linuxArm64()
|
||||||
|
linuxArm32Hfp()
|
||||||
|
|
||||||
|
val commonMain by sourceSets.getting
|
||||||
|
val nativeMain by sourceSets.creating
|
||||||
|
val linuxX64Main by sourceSets.getting
|
||||||
|
val linuxArm64Main by sourceSets.getting
|
||||||
|
val linuxArm32HfpMain by sourceSets.getting
|
||||||
|
|
||||||
|
nativeMain.dependsOn(commonMain)
|
||||||
|
linuxX64Main.dependsOn(nativeMain)
|
||||||
|
linuxArm64Main.dependsOn(nativeMain)
|
||||||
|
linuxArm32HfpMain.dependsOn(nativeMain)
|
||||||
|
|
||||||
|
val commonTest by sourceSets.getting
|
||||||
|
val nativeTest by sourceSets.creating
|
||||||
|
val linuxX64Test by sourceSets.getting
|
||||||
|
val linuxArm64Test by sourceSets.getting
|
||||||
|
|
||||||
|
nativeTest.dependsOn(commonTest)
|
||||||
|
linuxX64Test.dependsOn(nativeTest)
|
||||||
|
linuxArm64Test.dependsOn(nativeTest)
|
||||||
|
/* NOTE: linuxArm32HfpTest does not depend on nativeTest */
|
||||||
|
|
||||||
|
targets.withType<KotlinNativeTarget>().forEach { target ->
|
||||||
|
target.compilations.getByName("main").cinterops.create("dummy") {
|
||||||
|
headers("libs/dummy.h")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
kotlin.mpp.enableGranularSourceSetsMetadata=true
|
||||||
|
kotlin.native.enableDependencyPropagation=false
|
||||||
|
kotlin.mpp.enableCInteropCommonization=true
|
||||||
|
kotlin.mpp.enableCompatibilityMetadataVariant=false
|
||||||
|
kotlin.mpp.enableIntransitiveMetadataConfiguration=true
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
void dummyFunction();
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
val kotlin_version: String by settings
|
||||||
|
plugins {
|
||||||
|
kotlin("multiplatform").version(kotlin_version)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user