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:
Timofey Solonin
2024-02-29 15:37:39 +01:00
committed by Space Team
parent c6c0abae82
commit 33c3cd47dc
42 changed files with 59 additions and 68 deletions
@@ -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(
""" """
@@ -33,8 +33,7 @@ kotlin {
sourceSets.commonMain { sourceSets.commonMain {
dependencies { dependencies {
implementation("test:publishedWithoutResources:+") <dependencies>
implementation(project(":projectWithoutResources"))
} }
} }
} }