[Gradle] Split AGP depending on mpp lib test
#KT-45748 In Progress
This commit is contained in:
committed by
Space Team
parent
bdedc36ed3
commit
ff6442a1cb
+103
-40
@@ -189,9 +189,9 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@DisplayName("android app can depend on mpp lib")
|
@DisplayName("android mpp lib flavors publication can be configured")
|
||||||
@GradleAndroidTest
|
@GradleAndroidTest
|
||||||
fun testAndroidWithNewMppApp(
|
fun testMppAndroidLibFlavorsPublication(
|
||||||
gradleVersion: GradleVersion,
|
gradleVersion: GradleVersion,
|
||||||
agpVersion: String,
|
agpVersion: String,
|
||||||
jdkVersion: JdkVersions.ProvidedJdk,
|
jdkVersion: JdkVersions.ProvidedJdk,
|
||||||
@@ -202,37 +202,6 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||||
buildJdk = jdkVersion.location
|
buildJdk = jdkVersion.location
|
||||||
) {
|
) {
|
||||||
build("assemble", "compileDebugUnitTestJavaWithJavac", "printCompilerPluginOptions") {
|
|
||||||
// KT-30784
|
|
||||||
assertOutputDoesNotContain("API 'variant.getPackageLibrary()' is obsolete and has been replaced")
|
|
||||||
|
|
||||||
assertOutputContains("KT-29964 OK") // Output from lib/build.gradle
|
|
||||||
|
|
||||||
assertTasksExecuted(
|
|
||||||
":lib:compileDebugKotlinAndroidLib",
|
|
||||||
":lib:compileReleaseKotlinAndroidLib",
|
|
||||||
":lib:compileKotlinJvmLib",
|
|
||||||
":lib:compileKotlinJsLib",
|
|
||||||
":lib:compileCommonMainKotlinMetadata",
|
|
||||||
":app:compileDebugKotlinAndroidApp",
|
|
||||||
":app:compileReleaseKotlinAndroidApp",
|
|
||||||
":app:compileKotlinJvmApp",
|
|
||||||
":app:compileKotlinJsApp",
|
|
||||||
":app:compileCommonMainKotlinMetadata",
|
|
||||||
":lib:compileDebugUnitTestJavaWithJavac",
|
|
||||||
":app:compileDebugUnitTestJavaWithJavac"
|
|
||||||
)
|
|
||||||
|
|
||||||
listOf("debug", "release").forEach { variant ->
|
|
||||||
assertFileInProjectExists("lib/build/tmp/kotlin-classes/$variant/com/example/lib/ExpectedLibClass.class")
|
|
||||||
assertFileInProjectExists("lib/build/tmp/kotlin-classes/$variant/com/example/lib/CommonLibClass.class")
|
|
||||||
assertFileInProjectExists("lib/build/tmp/kotlin-classes/$variant/com/example/lib/AndroidLibClass.class")
|
|
||||||
|
|
||||||
assertFileInProjectExists("app/build/tmp/kotlin-classes/$variant/com/example/app/AKt.class")
|
|
||||||
assertFileInProjectExists("app/build/tmp/kotlin-classes/$variant/com/example/app/KtUsageKt.class")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val groupDir = subProject("lib").projectPath.resolve("build/repo/com/example")
|
val groupDir = subProject("lib").projectPath.resolve("build/repo/com/example")
|
||||||
build("publish") {
|
build("publish") {
|
||||||
assertDirectoryExists(groupDir.resolve("lib-jvmlib"))
|
assertDirectoryExists(groupDir.resolve("lib-jvmlib"))
|
||||||
@@ -243,7 +212,13 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
groupDir.deleteRecursively()
|
groupDir.deleteRecursively()
|
||||||
|
|
||||||
// Choose a single variant to publish, check that it's there:
|
// Choose a single variant to publish, check that it's there:
|
||||||
subProject("lib").buildGradle.appendText("\nkotlin.android('androidLib').publishLibraryVariants = ['release']")
|
subProject("lib").buildGradle.appendText(
|
||||||
|
//language=Gradle
|
||||||
|
"""
|
||||||
|
|
||||||
|
kotlin.android('androidLib').publishLibraryVariants = ['release']
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
build("publish") {
|
build("publish") {
|
||||||
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0.aar"))
|
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0.aar"))
|
||||||
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0-sources.jar"))
|
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0-sources.jar"))
|
||||||
@@ -252,7 +227,13 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
groupDir.deleteRecursively()
|
groupDir.deleteRecursively()
|
||||||
|
|
||||||
// Enable publishing for all Android variants:
|
// Enable publishing for all Android variants:
|
||||||
subProject("lib").buildGradle.appendText("\nkotlin.android('androidLib') { publishAllLibraryVariants() }")
|
subProject("lib").buildGradle.appendText(
|
||||||
|
//language=Gradle
|
||||||
|
"""
|
||||||
|
|
||||||
|
kotlin.android('androidLib') { publishAllLibraryVariants() }
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
build("publish") {
|
build("publish") {
|
||||||
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0.aar"))
|
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0.aar"))
|
||||||
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0-sources.jar"))
|
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0-sources.jar"))
|
||||||
@@ -262,7 +243,13 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
groupDir.deleteRecursively()
|
groupDir.deleteRecursively()
|
||||||
|
|
||||||
// Then group the variants by flavor and check that only one publication is created:
|
// Then group the variants by flavor and check that only one publication is created:
|
||||||
subProject("lib").buildGradle.appendText("\nkotlin.android('androidLib').publishLibraryVariantsGroupedByFlavor = true")
|
subProject("lib").buildGradle.appendText(
|
||||||
|
//language=Gradle
|
||||||
|
"""
|
||||||
|
|
||||||
|
kotlin.android('androidLib').publishLibraryVariantsGroupedByFlavor = true
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
build("publish") {
|
build("publish") {
|
||||||
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0.aar"))
|
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0.aar"))
|
||||||
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0-sources.jar"))
|
assertFileExists(groupDir.resolve("lib-androidlib/1.0/lib-androidlib-1.0-sources.jar"))
|
||||||
@@ -273,7 +260,11 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
|
|
||||||
// Add one flavor dimension with two flavors, check that the flavors produce grouped publications:
|
// Add one flavor dimension with two flavors, check that the flavors produce grouped publications:
|
||||||
subProject("lib").buildGradle.appendText(
|
subProject("lib").buildGradle.appendText(
|
||||||
"\nandroid { flavorDimensions('foo'); productFlavors { fooBar { dimension 'foo' }; fooBaz { dimension 'foo' } } }"
|
//language=Gradle
|
||||||
|
"""
|
||||||
|
|
||||||
|
android { flavorDimensions('foo'); productFlavors { fooBar { dimension 'foo' }; fooBaz { dimension 'foo' } } }
|
||||||
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
build("publish") {
|
build("publish") {
|
||||||
listOf("foobar", "foobaz").forEach { flavor ->
|
listOf("foobar", "foobaz").forEach { flavor ->
|
||||||
@@ -287,7 +278,11 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
|
|
||||||
// Disable the grouping and check that all the variants are published under separate artifactIds:
|
// Disable the grouping and check that all the variants are published under separate artifactIds:
|
||||||
subProject("lib").buildGradle.appendText(
|
subProject("lib").buildGradle.appendText(
|
||||||
"\nkotlin.android('androidLib') { publishLibraryVariantsGroupedByFlavor = false }"
|
//language=Gradle
|
||||||
|
"""
|
||||||
|
|
||||||
|
kotlin.android('androidLib') { publishLibraryVariantsGroupedByFlavor = false }
|
||||||
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
build("publish") {
|
build("publish") {
|
||||||
listOf("foobar", "foobaz").forEach { flavor ->
|
listOf("foobar", "foobaz").forEach { flavor ->
|
||||||
@@ -297,12 +292,34 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
groupDir.deleteRecursively()
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Convert the 'app' project to a library, publish the two without metadata,
|
@DisplayName("android mpp lib dependencies are properly rewritten")
|
||||||
|
@GradleAndroidTest
|
||||||
|
fun testMppAndroidLibDependenciesRewriting(
|
||||||
|
gradleVersion: GradleVersion,
|
||||||
|
agpVersion: String,
|
||||||
|
jdkVersion: JdkVersions.ProvidedJdk,
|
||||||
|
) {
|
||||||
|
project(
|
||||||
|
"new-mpp-android",
|
||||||
|
gradleVersion,
|
||||||
|
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||||
|
buildJdk = jdkVersion.location
|
||||||
|
) {
|
||||||
|
// Convert the 'app' project to a library, publish two flavors without metadata,
|
||||||
// check that the dependencies in the POMs are correctly rewritten:
|
// check that the dependencies in the POMs are correctly rewritten:
|
||||||
val appGroupDir = subProject("app").projectPath.resolve("build/repo/com/example")
|
val appGroupDir = subProject("app").projectPath.resolve("build/repo/com/example")
|
||||||
|
|
||||||
|
subProject("lib").buildGradle.appendText(
|
||||||
|
//language=Gradle
|
||||||
|
"""
|
||||||
|
|
||||||
|
android { flavorDimensions('foo'); productFlavors { fooBar { dimension 'foo' }; fooBaz { dimension 'foo' } } }
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
|
||||||
subProject("app").buildGradle.modify {
|
subProject("app").buildGradle.modify {
|
||||||
it.replace("com.android.application", "com.android.library")
|
it.replace("com.android.application", "com.android.library")
|
||||||
.replace("applicationId", "//") +
|
.replace("applicationId", "//") +
|
||||||
@@ -363,6 +380,52 @@ class KotlinAndroidMppIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("android app can depend on mpp lib")
|
||||||
|
@GradleAndroidTest
|
||||||
|
fun testAndroidWithNewMppApp(
|
||||||
|
gradleVersion: GradleVersion,
|
||||||
|
agpVersion: String,
|
||||||
|
jdkVersion: JdkVersions.ProvidedJdk,
|
||||||
|
) {
|
||||||
|
project(
|
||||||
|
"new-mpp-android",
|
||||||
|
gradleVersion,
|
||||||
|
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||||
|
buildJdk = jdkVersion.location
|
||||||
|
) {
|
||||||
|
build("assemble", "compileDebugUnitTestJavaWithJavac", "printCompilerPluginOptions") {
|
||||||
|
// KT-30784
|
||||||
|
assertOutputDoesNotContain("API 'variant.getPackageLibrary()' is obsolete and has been replaced")
|
||||||
|
|
||||||
|
assertOutputContains("KT-29964 OK") // Output from lib/build.gradle
|
||||||
|
|
||||||
|
assertTasksExecuted(
|
||||||
|
":lib:compileDebugKotlinAndroidLib",
|
||||||
|
":lib:compileReleaseKotlinAndroidLib",
|
||||||
|
":lib:compileKotlinJvmLib",
|
||||||
|
":lib:compileKotlinJsLib",
|
||||||
|
":lib:compileCommonMainKotlinMetadata",
|
||||||
|
":app:compileDebugKotlinAndroidApp",
|
||||||
|
":app:compileReleaseKotlinAndroidApp",
|
||||||
|
":app:compileKotlinJvmApp",
|
||||||
|
":app:compileKotlinJsApp",
|
||||||
|
":app:compileCommonMainKotlinMetadata",
|
||||||
|
":lib:compileDebugUnitTestJavaWithJavac",
|
||||||
|
":app:compileDebugUnitTestJavaWithJavac"
|
||||||
|
)
|
||||||
|
|
||||||
|
listOf("debug", "release").forEach { variant ->
|
||||||
|
assertFileInProjectExists("lib/build/tmp/kotlin-classes/$variant/com/example/lib/ExpectedLibClass.class")
|
||||||
|
assertFileInProjectExists("lib/build/tmp/kotlin-classes/$variant/com/example/lib/CommonLibClass.class")
|
||||||
|
assertFileInProjectExists("lib/build/tmp/kotlin-classes/$variant/com/example/lib/AndroidLibClass.class")
|
||||||
|
|
||||||
|
assertFileInProjectExists("app/build/tmp/kotlin-classes/$variant/com/example/app/AKt.class")
|
||||||
|
assertFileInProjectExists("app/build/tmp/kotlin-classes/$variant/com/example/app/KtUsageKt.class")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@DisplayName("KT-29343: mpp source set dependencies are propagated to android tests")
|
@DisplayName("KT-29343: mpp source set dependencies are propagated to android tests")
|
||||||
@GradleAndroidTest
|
@GradleAndroidTest
|
||||||
fun testAndroidMppProductionDependenciesInTests(
|
fun testAndroidMppProductionDependenciesInTests(
|
||||||
|
|||||||
Reference in New Issue
Block a user