Skip to content

Commit fa99f07

Browse files
committed
Fix spacing
1 parent f3aff4d commit fa99f07

File tree

2 files changed

+168
-168
lines changed

2 files changed

+168
-168
lines changed

buildSrc/src/main/kotlin/CIJobsExtensions.kt

Lines changed: 76 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -8,85 +8,85 @@ import org.gradle.kotlin.dsl.extra
88
* Checks if a task is affected by git changes
99
*/
1010
internal fun isAffectedBy(baseTask: Task, affectedProjects: Map<Project, Set<String>>): String? {
11-
val visited = mutableSetOf<Task>()
12-
val queue = mutableListOf(baseTask)
11+
val visited = mutableSetOf<Task>()
12+
val queue = mutableListOf(baseTask)
13+
14+
while (queue.isNotEmpty()) {
15+
val t = queue.removeAt(0)
16+
if (visited.contains(t)) {
17+
continue
18+
}
19+
visited.add(t)
1320

14-
while (queue.isNotEmpty()) {
15-
val t = queue.removeAt(0)
16-
if (visited.contains(t)) {
17-
continue
18-
}
19-
visited.add(t)
20-
21-
val affectedTasks = affectedProjects[t.project]
22-
if (affectedTasks != null) {
23-
if (affectedTasks.contains("all")) {
24-
return "${t.project.path}:${t.name}"
25-
}
26-
if (affectedTasks.contains(t.name)) {
27-
return "${t.project.path}:${t.name}"
28-
}
29-
}
30-
31-
t.taskDependencies.getDependencies(t).forEach { queue.add(it) }
21+
val affectedTasks = affectedProjects[t.project]
22+
if (affectedTasks != null) {
23+
if (affectedTasks.contains("all")) {
24+
return "${t.project.path}:${t.name}"
25+
}
26+
if (affectedTasks.contains(t.name)) {
27+
return "${t.project.path}:${t.name}"
28+
}
3229
}
33-
return null
30+
31+
t.taskDependencies.getDependencies(t).forEach { queue.add(it) }
32+
}
33+
return null
3434
}
3535

3636
/**
3737
* Creates a single aggregate root task that depends on matching subproject tasks
3838
*/
3939
private fun Project.createRootTask(
40-
rootTaskName: String,
41-
subProjTaskName: String,
42-
includePrefixes: List<String>,
43-
excludePrefixes: List<String>,
44-
forceCoverage: Boolean
40+
rootTaskName: String,
41+
subProjTaskName: String,
42+
includePrefixes: List<String>,
43+
excludePrefixes: List<String>,
44+
forceCoverage: Boolean
4545
) {
46-
val coverage = forceCoverage || rootProject.providers.gradleProperty("checkCoverage").isPresent
47-
tasks.register(rootTaskName) {
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) }) {
55-
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-
}
71-
}
72-
if (isAffected) {
73-
dependencies.add(testTaskProvider)
74-
}
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-
}
83-
}
84-
}
85-
}
46+
val coverage = forceCoverage || rootProject.providers.gradleProperty("checkCoverage").isPresent
47+
tasks.register(rootTaskName) {
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) }) {
55+
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+
}
8671
}
87-
dependencies
88-
})
89-
}
72+
if (isAffected) {
73+
dependencies.add(testTaskProvider)
74+
}
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+
}
83+
}
84+
}
85+
}
86+
}
87+
dependencies
88+
})
89+
}
9090
}
9191

9292
/**
@@ -98,13 +98,13 @@ private fun Project.createRootTask(
9898
* - ${baseTaskName}Check - runs check
9999
*/
100100
fun Project.testAggregate(
101-
baseTaskName: String,
102-
includePrefixes: List<String>,
103-
excludePrefixes: List<String> = emptyList(),
104-
forceCoverage: Boolean = false
101+
baseTaskName: String,
102+
includePrefixes: List<String>,
103+
excludePrefixes: List<String> = emptyList(),
104+
forceCoverage: Boolean = false
105105
) {
106-
createRootTask("${baseTaskName}Test", "allTests", includePrefixes, excludePrefixes, forceCoverage)
107-
createRootTask("${baseTaskName}LatestDepTest", "allLatestDepTests", includePrefixes, excludePrefixes, forceCoverage)
108-
createRootTask("${baseTaskName}Check", "check", includePrefixes, excludePrefixes, forceCoverage)
106+
createRootTask("${baseTaskName}Test", "allTests", includePrefixes, excludePrefixes, forceCoverage)
107+
createRootTask("${baseTaskName}LatestDepTest", "allLatestDepTests", includePrefixes, excludePrefixes, forceCoverage)
108+
createRootTask("${baseTaskName}Check", "check", includePrefixes, excludePrefixes, forceCoverage)
109109
}
110110

buildSrc/src/main/kotlin/datadog.ci-jobs.gradle.kts

Lines changed: 92 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -10,123 +10,123 @@ import kotlin.math.abs
1010

1111
// Set up activePartition property on all projects
1212
allprojects {
13-
extra.set("activePartition", true)
14-
15-
val shouldUseTaskPartitions = rootProject.hasProperty("taskPartitionCount") && rootProject.hasProperty("taskPartition")
16-
if (shouldUseTaskPartitions) {
17-
val taskPartitionCount = rootProject.property("taskPartitionCount") as String
18-
val taskPartition = rootProject.property("taskPartition") as String
19-
val currentTaskPartition = abs(project.path.hashCode() % taskPartitionCount.toInt())
20-
extra.set("activePartition", currentTaskPartition == taskPartition.toInt())
21-
}
13+
extra.set("activePartition", true)
14+
15+
val shouldUseTaskPartitions = rootProject.hasProperty("taskPartitionCount") && rootProject.hasProperty("taskPartition")
16+
if (shouldUseTaskPartitions) {
17+
val taskPartitionCount = rootProject.property("taskPartitionCount") as String
18+
val taskPartition = rootProject.property("taskPartition") as String
19+
val currentTaskPartition = abs(project.path.hashCode() % taskPartitionCount.toInt())
20+
extra.set("activePartition", currentTaskPartition == taskPartition.toInt())
21+
}
2222
}
2323

2424
fun relativeToGitRoot(f: File): File {
25-
return rootProject.projectDir.toPath().relativize(f.absoluteFile.toPath()).toFile()
25+
return rootProject.projectDir.toPath().relativize(f.absoluteFile.toPath()).toFile()
2626
}
2727

2828
fun getChangedFiles(baseRef: String, newRef: String): List<File> {
29-
val stdout = StringBuilder()
30-
val stderr = StringBuilder()
29+
val stdout = StringBuilder()
30+
val stderr = StringBuilder()
3131

32-
val proc = Runtime.getRuntime().exec(arrayOf("git", "diff", "--name-only", "$baseRef..$newRef"))
33-
proc.inputStream.bufferedReader().use { stdout.append(it.readText()) }
34-
proc.errorStream.bufferedReader().use { stderr.append(it.readText()) }
35-
proc.waitFor()
36-
require(proc.exitValue() == 0) { "git diff command failed, stderr: $stderr" }
32+
val proc = Runtime.getRuntime().exec(arrayOf("git", "diff", "--name-only", "$baseRef..$newRef"))
33+
proc.inputStream.bufferedReader().use { stdout.append(it.readText()) }
34+
proc.errorStream.bufferedReader().use { stderr.append(it.readText()) }
35+
proc.waitFor()
36+
require(proc.exitValue() == 0) { "git diff command failed, stderr: $stderr" }
3737

38-
val out = stdout.toString().trim()
39-
if (out.isEmpty()) {
40-
return emptyList()
41-
}
38+
val out = stdout.toString().trim()
39+
if (out.isEmpty()) {
40+
return emptyList()
41+
}
4242

43-
logger.debug("git diff output: $out")
44-
return out.split("\n").map { File(rootProject.projectDir, it.trim()) }
43+
logger.debug("git diff output: $out")
44+
return out.split("\n").map { File(rootProject.projectDir, it.trim()) }
4545
}
4646

4747
// Initialize git change tracking
4848
rootProject.extra.set("useGitChanges", false)
4949

5050
if (rootProject.hasProperty("gitBaseRef")) {
51-
val baseRef = rootProject.property("gitBaseRef") as String
52-
val newRef = if (rootProject.hasProperty("gitNewRef")) {
53-
rootProject.property("gitNewRef") as String
54-
} else {
55-
"HEAD"
56-
}
57-
58-
val changedFiles = getChangedFiles(baseRef, newRef)
59-
rootProject.extra.set("changedFiles", changedFiles)
60-
rootProject.extra.set("useGitChanges", true)
61-
62-
val ignoredFiles = fileTree(rootProject.projectDir) {
63-
include(".gitignore", ".editorconfig")
64-
include("*.md", "**/*.md")
65-
include("gradlew", "gradlew.bat", "mvnw", "mvnw.cmd")
66-
include("NOTICE")
67-
include("static-analysis.datadog.yml")
68-
}
51+
val baseRef = rootProject.property("gitBaseRef") as String
52+
val newRef = if (rootProject.hasProperty("gitNewRef")) {
53+
rootProject.property("gitNewRef") as String
54+
} else {
55+
"HEAD"
56+
}
57+
58+
val changedFiles = getChangedFiles(baseRef, newRef)
59+
rootProject.extra.set("changedFiles", changedFiles)
60+
rootProject.extra.set("useGitChanges", true)
61+
62+
val ignoredFiles = fileTree(rootProject.projectDir) {
63+
include(".gitignore", ".editorconfig")
64+
include("*.md", "**/*.md")
65+
include("gradlew", "gradlew.bat", "mvnw", "mvnw.cmd")
66+
include("NOTICE")
67+
include("static-analysis.datadog.yml")
68+
}
6969

70-
changedFiles.forEach { f ->
71-
if (ignoredFiles.contains(f)) {
72-
logger.warn("Ignoring changed file: ${relativeToGitRoot(f)}")
73-
}
70+
changedFiles.forEach { f ->
71+
if (ignoredFiles.contains(f)) {
72+
logger.warn("Ignoring changed file: ${relativeToGitRoot(f)}")
7473
}
74+
}
7575

76-
val filteredChangedFiles = changedFiles.filter { !ignoredFiles.contains(it) }
77-
rootProject.extra.set("changedFiles", filteredChangedFiles)
78-
79-
val globalEffectFiles = fileTree(rootProject.projectDir) {
80-
include(".gitlab/**")
81-
include("build.gradle")
82-
include("gradle/**")
83-
}
84-
85-
for (f in filteredChangedFiles) {
86-
if (globalEffectFiles.contains(f)) {
87-
logger.warn("Global effect change: ${relativeToGitRoot(f)} (no tasks will be skipped)")
88-
rootProject.extra.set("useGitChanges", false)
89-
break
90-
}
76+
val filteredChangedFiles = changedFiles.filter { !ignoredFiles.contains(it) }
77+
rootProject.extra.set("changedFiles", filteredChangedFiles)
78+
79+
val globalEffectFiles = fileTree(rootProject.projectDir) {
80+
include(".gitlab/**")
81+
include("build.gradle")
82+
include("gradle/**")
83+
}
84+
85+
for (f in filteredChangedFiles) {
86+
if (globalEffectFiles.contains(f)) {
87+
logger.warn("Global effect change: ${relativeToGitRoot(f)} (no tasks will be skipped)")
88+
rootProject.extra.set("useGitChanges", false)
89+
break
9190
}
91+
}
92+
93+
if (rootProject.extra.get("useGitChanges") as Boolean) {
94+
logger.warn("Git change tracking is enabled: $baseRef..$newRef")
9295

93-
if (rootProject.extra.get("useGitChanges") as Boolean) {
94-
logger.warn("Git change tracking is enabled: $baseRef..$newRef")
95-
96-
val projects = subprojects.sortedByDescending { it.projectDir.path.length }
97-
val affectedProjects = mutableMapOf<Project, MutableSet<String>>()
96+
val projects = subprojects.sortedByDescending { it.projectDir.path.length }
97+
val affectedProjects = mutableMapOf<Project, MutableSet<String>>()
9898

99-
// Path prefixes mapped to affected task names. A file not matching any of these prefixes will affect all tasks in
100-
// the project ("all" can be used a task name to explicitly state the same). Only the first matching prefix is used.
101-
val matchers = listOf(
102-
mapOf("prefix" to "src/testFixtures/", "task" to "testFixturesClasses"),
103-
mapOf("prefix" to "src/test/", "task" to "testClasses"),
104-
mapOf("prefix" to "src/jmh/", "task" to "jmhCompileGeneratedClasses")
105-
)
99+
// Path prefixes mapped to affected task names. A file not matching any of these prefixes will affect all tasks in
100+
// the project ("all" can be used a task name to explicitly state the same). Only the first matching prefix is used.
101+
val matchers = listOf(
102+
mapOf("prefix" to "src/testFixtures/", "task" to "testFixturesClasses"),
103+
mapOf("prefix" to "src/test/", "task" to "testClasses"),
104+
mapOf("prefix" to "src/jmh/", "task" to "jmhCompileGeneratedClasses")
105+
)
106106

107-
for (f in filteredChangedFiles) {
108-
val p = projects.find { f.toString().startsWith(it.projectDir.path + "/") }
109-
if (p == null) {
110-
logger.warn("Changed file: ${relativeToGitRoot(f)} at root project (no task will be skipped)")
111-
rootProject.extra.set("useGitChanges", false)
112-
break
113-
}
107+
for (f in filteredChangedFiles) {
108+
val p = projects.find { f.toString().startsWith(it.projectDir.path + "/") }
109+
if (p == null) {
110+
logger.warn("Changed file: ${relativeToGitRoot(f)} at root project (no task will be skipped)")
111+
rootProject.extra.set("useGitChanges", false)
112+
break
113+
}
114114

115-
// Make sure path separator is /
116-
val relPath = p.projectDir.toPath().relativize(f.toPath()).joinToString("/")
117-
val task = matchers.find { relPath.startsWith(it["prefix"]!!) }?.get("task") ?: "all"
118-
logger.warn("Changed file: ${relativeToGitRoot(f)} in project ${p.path} ($task)")
119-
affectedProjects.computeIfAbsent(p) { mutableSetOf() }.add(task)
120-
}
121-
122-
rootProject.extra.set("affectedProjects", affectedProjects)
115+
// Make sure path separator is /
116+
val relPath = p.projectDir.toPath().relativize(f.toPath()).joinToString("/")
117+
val task = matchers.find { relPath.startsWith(it["prefix"]!!) }?.get("task") ?: "all"
118+
logger.warn("Changed file: ${relativeToGitRoot(f)} in project ${p.path} ($task)")
119+
affectedProjects.computeIfAbsent(p) { mutableSetOf() }.add(task)
123120
}
121+
122+
rootProject.extra.set("affectedProjects", affectedProjects)
123+
}
124124
}
125125

126126
tasks.register("runMuzzle") {
127-
val muzzleSubprojects = subprojects.filter { p ->
128-
val activePartition = p.extra.get("activePartition") as Boolean
129-
activePartition && p.plugins.hasPlugin("java") && p.plugins.hasPlugin("muzzle")
130-
}
131-
dependsOn(muzzleSubprojects.map { p -> "${p.path}:muzzle" })
127+
val muzzleSubprojects = subprojects.filter { p ->
128+
val activePartition = p.extra.get("activePartition") as Boolean
129+
activePartition && p.plugins.hasPlugin("java") && p.plugins.hasPlugin("muzzle")
130+
}
131+
dependsOn(muzzleSubprojects.map { p -> "${p.path}:muzzle" })
132132
}

0 commit comments

Comments
 (0)