Skip to content

Commit a9198b5

Browse files
committed
More CIJobsExtensions lazy API
1 parent e9c9bd4 commit a9198b5

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

buildSrc/src/main/kotlin/CIJobsExtensions.kt

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -45,43 +45,47 @@ private fun Project.createRootTask(
4545
) {
4646
val coverage = forceCoverage || rootProject.providers.gradleProperty("checkCoverage").isPresent
4747
tasks.register(rootTaskName) {
48-
subprojects.forEach { subproject ->
49-
val activePartition = subproject.extra.get("activePartition") as Boolean
50-
if (activePartition &&
51-
includePrefixes.any { subproject.path.startsWith(it) } &&
52-
!excludePrefixes.any { subproject.path.startsWith(it) }) {
53-
54-
if (subProjTaskName in subproject.tasks.names) {
55-
val testTaskProvider = subproject.tasks.named(subProjTaskName)
56-
var isAffected = true
48+
dependsOn(project.provider {
49+
val dependencies = mutableListOf<Any>()
50+
subprojects.forEach { subproject ->
51+
val activePartition = subproject.extra.get("activePartition") as Boolean
52+
if (activePartition &&
53+
includePrefixes.any { subproject.path.startsWith(it) } &&
54+
!excludePrefixes.any { subproject.path.startsWith(it) }) {
5755

58-
val useGitChanges = rootProject.extra.get("useGitChanges") as Boolean
59-
if (useGitChanges) {
60-
@Suppress("UNCHECKED_CAST")
61-
val affectedProjects = rootProject.extra.get("affectedProjects") as Map<Project, Set<String>>
62-
val fileTrigger = isAffectedBy(testTaskProvider.get(), affectedProjects)
63-
if (fileTrigger != null) {
64-
logger.warn("Selecting ${subproject.path}:$subProjTaskName (triggered by $fileTrigger)")
65-
} else {
66-
logger.warn("Skipping ${subproject.path}:$subProjTaskName (not affected by changed files)")
67-
isAffected = false
56+
if (subProjTaskName in subproject.tasks.names) {
57+
val testTaskProvider = subproject.tasks.named(subProjTaskName)
58+
var isAffected = true
59+
60+
val useGitChanges = rootProject.extra.get("useGitChanges") as Boolean
61+
if (useGitChanges) {
62+
@Suppress("UNCHECKED_CAST")
63+
val affectedProjects = rootProject.extra.get("affectedProjects") as Map<Project, Set<String>>
64+
val fileTrigger = isAffectedBy(testTaskProvider.get(), affectedProjects)
65+
if (fileTrigger != null) {
66+
logger.warn("Selecting ${subproject.path}:$subProjTaskName (triggered by $fileTrigger)")
67+
} else {
68+
logger.warn("Skipping ${subproject.path}:$subProjTaskName (not affected by changed files)")
69+
isAffected = false
70+
}
6871
}
69-
}
70-
if (isAffected) {
71-
dependsOn(testTaskProvider)
72-
}
73-
74-
if (isAffected && coverage) {
75-
if ("jacocoTestReport" in subproject.tasks.names) {
76-
dependsOn(subproject.tasks.named("jacocoTestReport"))
72+
if (isAffected) {
73+
dependencies.add(testTaskProvider)
7774
}
78-
if ("jacocoTestCoverageVerification" in subproject.tasks.names) {
79-
dependsOn(subproject.tasks.named("jacocoTestCoverageVerification"))
75+
76+
if (isAffected && coverage) {
77+
if ("jacocoTestReport" in subproject.tasks.names) {
78+
dependencies.add(subproject.tasks.named("jacocoTestReport"))
79+
}
80+
if ("jacocoTestCoverageVerification" in subproject.tasks.names) {
81+
dependencies.add(subproject.tasks.named("jacocoTestCoverageVerification"))
82+
}
8083
}
8184
}
8285
}
8386
}
84-
}
87+
dependencies
88+
})
8589
}
8690
}
8791

0 commit comments

Comments
 (0)