[Gradle, Native, IT] Add test for exporting published lib
This test checks that `transitiveExport = true` is no longer required for exporting a published multiplatform library in a native library.
This commit is contained in:
committed by
Space
parent
045528e643
commit
c45a3d39b1
+28
@@ -459,6 +459,34 @@ class GeneralNativeIT : BaseGradleIT() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testTransitiveExportIsNotRequiredForExportingVariant() = with(
|
||||||
|
transformNativeTestProjectWithPluginDsl(
|
||||||
|
wrapperVersion = GradleVersionRequired.AtLeast("6.8"), // See https://youtrack.jetbrains.com/issue/KT-52447
|
||||||
|
projectName = "export-published-lib",
|
||||||
|
directoryPrefix = "native-binaries"
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
val binaryName = "shared"
|
||||||
|
val headerPath = "shared/build/bin/linuxX64/debugStatic/lib${binaryName}_api.h"
|
||||||
|
val binaryBuildTask = "linkDebugStaticLinuxX64"
|
||||||
|
|
||||||
|
build(":lib:publish") {
|
||||||
|
assertSuccessful()
|
||||||
|
}
|
||||||
|
|
||||||
|
build(":shared:$binaryBuildTask") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertFileExists(headerPath)
|
||||||
|
val headerContents = fileInWorkingDir(headerPath).readText()
|
||||||
|
|
||||||
|
assertTrue(headerContents.contains("funInShared"))
|
||||||
|
|
||||||
|
// Check that the function from exported published library (:lib) is included to the header:
|
||||||
|
assertTrue(headerContents.contains("funToExport"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testNativeExecutables() = with(transformNativeTestProjectWithPluginDsl("executables", directoryPrefix = "native-binaries")) {
|
fun testNativeExecutables() = with(transformNativeTestProjectWithPluginDsl("executables", directoryPrefix = "native-binaries")) {
|
||||||
val binaries = mutableListOf(
|
val binaries = mutableListOf(
|
||||||
|
|||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
plugins {
|
||||||
|
kotlin("multiplatform").version("<pluginMarkerVersion>")
|
||||||
|
`maven-publish`
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
maven("../repo")
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
group = "com.example"
|
||||||
|
version = "1.0"
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvm()
|
||||||
|
linuxX64()
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
repositories {
|
||||||
|
maven("../repo")
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fun funToExport() {}
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
include("lib")
|
||||||
|
include("shared")
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
plugins {
|
||||||
|
kotlin("multiplatform").version("<pluginMarkerVersion>")
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
maven("../repo")
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvm()
|
||||||
|
linuxX64 {
|
||||||
|
binaries.staticLib {
|
||||||
|
export("com.example:lib:1.0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
val commonMain by getting {
|
||||||
|
dependencies {
|
||||||
|
api("com.example:lib:1.0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user