Simplify and improve MultiplatformResourcesConsumptionIT
* Generate dependencies in a less copypasty way * Test a slightly more intricate graph of dependencies without resources in parts of the graph ^KT-65540
This commit is contained in:
committed by
Space Team
parent
c6c0abae82
commit
33c3cd47dc
+58
-66
@@ -66,6 +66,12 @@ class MultiplatformResourcesConsumptionIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
preparePublishedDependencies(gradleVersion, providedJdk, androidVersion, sharedRepo)
|
preparePublishedDependencies(gradleVersion, providedJdk, androidVersion, sharedRepo)
|
||||||
|
|
||||||
|
buildGradleKts.setDependencies(
|
||||||
|
"""
|
||||||
|
implementation("test:publishedA:+")
|
||||||
|
implementation(project(":projectA"))
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
// Gradle 7.4.2 doesn't pick up sharedRepo from build.gradle.kts and Gradle 8.5 doesn't pick it up from settings.gradle.kts
|
// Gradle 7.4.2 doesn't pick up sharedRepo from build.gradle.kts and Gradle 8.5 doesn't pick it up from settings.gradle.kts
|
||||||
buildGradleKts.setUpRepositoriesInBuildGradleKts(sharedRepo)
|
buildGradleKts.setUpRepositoriesInBuildGradleKts(sharedRepo)
|
||||||
settingsGradleKts.setUpRepositoriesInSettingGradleKts(sharedRepo)
|
settingsGradleKts.setUpRepositoriesInSettingGradleKts(sharedRepo)
|
||||||
@@ -100,42 +106,42 @@ class MultiplatformResourcesConsumptionIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class Project(
|
||||||
|
val name: String,
|
||||||
|
val dependsOn: String?,
|
||||||
|
val hasResources: Boolean,
|
||||||
|
)
|
||||||
|
|
||||||
|
private val dependencies: List<Project> = listOf(
|
||||||
|
Project("A", dependsOn = "B", hasResources = false),
|
||||||
|
Project("B", dependsOn = "C", hasResources = true),
|
||||||
|
Project("C", dependsOn = "D", hasResources = false),
|
||||||
|
Project("D", dependsOn = null, hasResources = true),
|
||||||
|
)
|
||||||
|
|
||||||
private fun prepareProjectDependencies(
|
private fun prepareProjectDependencies(
|
||||||
gradleVersion: GradleVersion,
|
gradleVersion: GradleVersion,
|
||||||
providedJdk: JdkVersions.ProvidedJdk,
|
providedJdk: JdkVersions.ProvidedJdk,
|
||||||
publicationRepository: Path,
|
publicationRepository: Path,
|
||||||
): List<Path> {
|
): List<Path> {
|
||||||
val projectWithoutResources = project(
|
val projectPaths = mutableListOf<Path>()
|
||||||
"multiplatformResources/consumption/dependency",
|
dependencies.forEach { dependencyProject ->
|
||||||
gradleVersion,
|
projectPaths.add(
|
||||||
buildJdk = providedJdk.location,
|
project(
|
||||||
projectPathAdditionalSuffix = "projectWithoutResources",
|
"multiplatformResources/consumption/dependency",
|
||||||
) {
|
gradleVersion,
|
||||||
buildGradleKts.replaceText("<dependencies>", "implementation(project(\":projectWithResources\"))")
|
buildJdk = providedJdk.location,
|
||||||
buildGradleKts.replaceText("<enablePublication>", "false")
|
projectPathAdditionalSuffix = "project${dependencyProject.name}",
|
||||||
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
) {
|
||||||
|
buildGradleKts.setDependencies(
|
||||||
|
dependencyProject.dependsOn?.let { "implementation(project(\":project${it}\"))" } ?: ""
|
||||||
|
)
|
||||||
|
buildGradleKts.enableResourcesPublication(dependencyProject.hasResources)
|
||||||
|
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
||||||
|
}.projectPath
|
||||||
|
)
|
||||||
}
|
}
|
||||||
val projectWithResources = project(
|
return projectPaths
|
||||||
"multiplatformResources/consumption/dependency",
|
|
||||||
gradleVersion,
|
|
||||||
buildJdk = providedJdk.location,
|
|
||||||
projectPathAdditionalSuffix = "projectWithResources",
|
|
||||||
) {
|
|
||||||
buildGradleKts.replaceText("<dependencies>", "implementation(project(\":projectWithResourcesTransitive\"))")
|
|
||||||
buildGradleKts.replaceText("<enablePublication>", "true")
|
|
||||||
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
|
||||||
}
|
|
||||||
val projectWithResourcesTransitive = project(
|
|
||||||
"multiplatformResources/consumption/dependency",
|
|
||||||
gradleVersion,
|
|
||||||
buildJdk = providedJdk.location,
|
|
||||||
projectPathAdditionalSuffix = "projectWithResourcesTransitive",
|
|
||||||
) {
|
|
||||||
buildGradleKts.replaceText("<dependencies>", "")
|
|
||||||
buildGradleKts.replaceText("<enablePublication>", "true")
|
|
||||||
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
|
||||||
}
|
|
||||||
return listOf(projectWithoutResources, projectWithResources, projectWithResourcesTransitive).map { it.projectPath }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun preparePublishedDependencies(
|
private fun preparePublishedDependencies(
|
||||||
@@ -144,43 +150,26 @@ class MultiplatformResourcesConsumptionIT : KGPBaseTest() {
|
|||||||
androidVersion: String,
|
androidVersion: String,
|
||||||
publicationRepository: Path,
|
publicationRepository: Path,
|
||||||
) {
|
) {
|
||||||
val publishedWithoutResources = project(
|
val projectToPublish = mutableListOf<TestProject>()
|
||||||
"multiplatformResources/consumption/dependency",
|
dependencies.forEach { dependencyProject ->
|
||||||
gradleVersion,
|
projectToPublish.add(
|
||||||
buildJdk = providedJdk.location,
|
project(
|
||||||
projectPathAdditionalSuffix = "publishedWithoutResources",
|
"multiplatformResources/consumption/dependency",
|
||||||
localRepoDir = publicationRepository,
|
gradleVersion,
|
||||||
) {
|
buildJdk = providedJdk.location,
|
||||||
buildGradleKts.replaceText("<dependencies>", "implementation(\"test:publishedWithResources:+\")")
|
projectPathAdditionalSuffix = "published${dependencyProject.name}",
|
||||||
buildGradleKts.replaceText("<enablePublication>", "false")
|
localRepoDir = publicationRepository,
|
||||||
buildGradleKts.setUpPublishing(publicationRepository)
|
) {
|
||||||
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
buildGradleKts.setDependencies(
|
||||||
|
dependencyProject.dependsOn?.let { "implementation(\"test:published${it}:+\")" } ?: ""
|
||||||
|
)
|
||||||
|
buildGradleKts.enableResourcesPublication(dependencyProject.hasResources)
|
||||||
|
buildGradleKts.setUpPublishing(publicationRepository)
|
||||||
|
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
val publishedWithResources = project(
|
projectToPublish.reversed().forEach {
|
||||||
"multiplatformResources/consumption/dependency",
|
|
||||||
gradleVersion,
|
|
||||||
buildJdk = providedJdk.location,
|
|
||||||
projectPathAdditionalSuffix = "publishedWithResources",
|
|
||||||
localRepoDir = publicationRepository,
|
|
||||||
) {
|
|
||||||
buildGradleKts.replaceText("<dependencies>", "implementation(\"test:publishedWithResourcesTransitive:+\")")
|
|
||||||
buildGradleKts.replaceText("<enablePublication>", "true")
|
|
||||||
buildGradleKts.setUpPublishing(publicationRepository)
|
|
||||||
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
|
||||||
}
|
|
||||||
val publishedWithResourcesTransitive = project(
|
|
||||||
"multiplatformResources/consumption/dependency",
|
|
||||||
gradleVersion,
|
|
||||||
buildJdk = providedJdk.location,
|
|
||||||
projectPathAdditionalSuffix = "publishedWithResourcesTransitive",
|
|
||||||
localRepoDir = publicationRepository,
|
|
||||||
) {
|
|
||||||
buildGradleKts.replaceText("<dependencies>", "")
|
|
||||||
buildGradleKts.replaceText("<enablePublication>", "true")
|
|
||||||
buildGradleKts.setUpPublishing(publicationRepository)
|
|
||||||
buildGradleKts.setUpRepositoriesInBuildGradleKts(publicationRepository)
|
|
||||||
}
|
|
||||||
listOf(publishedWithResourcesTransitive, publishedWithResources, publishedWithoutResources).forEach {
|
|
||||||
it.buildWithAGPVersion(
|
it.buildWithAGPVersion(
|
||||||
":publishAllPublicationsToMavenRepository",
|
":publishAllPublicationsToMavenRepository",
|
||||||
androidVersion = androidVersion,
|
androidVersion = androidVersion,
|
||||||
@@ -189,6 +178,9 @@ class MultiplatformResourcesConsumptionIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Path.setDependencies(dependencies: String) = replaceText("<dependencies>", dependencies)
|
||||||
|
private fun Path.enableResourcesPublication(publish: Boolean) = replaceText("<enablePublication>", if (publish) "true" else "false")
|
||||||
|
|
||||||
private fun Path.setUpRepositoriesInBuildGradleKts(publicationRepository: Path) = append(repositories(publicationRepository))
|
private fun Path.setUpRepositoriesInBuildGradleKts(publicationRepository: Path) = append(repositories(publicationRepository))
|
||||||
private fun Path.setUpRepositoriesInSettingGradleKts(publicationRepository: Path) = append(
|
private fun Path.setUpRepositoriesInSettingGradleKts(publicationRepository: Path) = append(
|
||||||
"""
|
"""
|
||||||
|
|||||||
+1
-2
@@ -33,8 +33,7 @@ kotlin {
|
|||||||
|
|
||||||
sourceSets.commonMain {
|
sourceSets.commonMain {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation("test:publishedWithoutResources:+")
|
<dependencies>
|
||||||
implementation(project(":projectWithoutResources"))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user