From 3468c31bc9e7df1acef719f07c2082f15af000a1 Mon Sep 17 00:00:00 2001 From: Josh Feinberg <15068619+joshafeinberg@users.noreply.github.com> Date: Tue, 19 Aug 2025 13:33:30 -0500 Subject: [PATCH 1/3] Make DependencyTracker.kt not store rootProject or logger so that its serializable again --- .../dropbox/affectedmoduledetector/AffectedModuleDetector.kt | 2 +- .../affectedmoduledetector/AffectedModuleDetectorPlugin.kt | 3 ++- .../com/dropbox/affectedmoduledetector/DependencyTracker.kt | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt index 1251f9f..aac4a48 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt @@ -591,7 +591,7 @@ class AffectedModuleDetectorImpl( */ private fun findDependentProjects(): Set { return changedProjects.flatMap { path -> - dependencyTracker.findAllDependents(path) + dependencyTracker.findAllDependents(path, logger) }.toSet() } diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt index ed5af51..02d9f14 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt @@ -8,6 +8,7 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.tasks.testing.Test +import org.gradle.internal.configuration.problems.logger import org.gradle.util.GradleVersion import org.jetbrains.annotations.VisibleForTesting @@ -227,7 +228,7 @@ class AffectedModuleDetectorPlugin : Plugin { val tracker = DependencyTracker(project, null) project.tasks.configureEach { task -> if (task.name.contains(ANDROID_TEST_PATTERN)) { - tracker.findAllDependents(project.projectPath).forEach { dependentProject -> + tracker.findAllDependents(project.projectPath, logger).forEach { dependentProject -> project.rootProject.findProject(dependentProject.path)?.tasks?.forEach { dependentTask -> AffectedModuleDetector.configureTaskGuard(dependentTask) } diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt index a7b66e1..4554cdf 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt @@ -28,7 +28,7 @@ import java.io.Serializable * Utility class that traverses all project dependencies and discover which modules depend on each * other. This is mainly used by [AffectedModuleDetector] to find out which projects should be run. */ -class DependencyTracker(private val rootProject: Project, private val logger: Logger?) : Serializable { +class DependencyTracker(rootProject: Project, logger: Logger?) : Serializable { private val dependentList: Map> by lazy { val result = mutableMapOf>() @@ -52,7 +52,7 @@ class DependencyTracker(private val rootProject: Project, private val logger: Lo result } - fun findAllDependents(projectPath: ProjectPath): Set { + fun findAllDependents(projectPath: ProjectPath, logger: Logger?): Set { logger?.info("finding dependents of $projectPath") val result = mutableSetOf() fun addAllDependents(projectPath: ProjectPath) { From c2fe570e010ae6bcc79580d163a7c6d2f2cfbcba Mon Sep 17 00:00:00 2001 From: Josh Feinberg <15068619+joshafeinberg@users.noreply.github.com> Date: Tue, 19 Aug 2025 13:35:37 -0500 Subject: [PATCH 2/3] Remove logger from filtering android tasks --- .../affectedmoduledetector/AffectedModuleDetectorPlugin.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt index 02d9f14..9f4edc1 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt @@ -8,7 +8,6 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.tasks.testing.Test -import org.gradle.internal.configuration.problems.logger import org.gradle.util.GradleVersion import org.jetbrains.annotations.VisibleForTesting @@ -228,7 +227,7 @@ class AffectedModuleDetectorPlugin : Plugin { val tracker = DependencyTracker(project, null) project.tasks.configureEach { task -> if (task.name.contains(ANDROID_TEST_PATTERN)) { - tracker.findAllDependents(project.projectPath, logger).forEach { dependentProject -> + tracker.findAllDependents(project.projectPath, null).forEach { dependentProject -> project.rootProject.findProject(dependentProject.path)?.tasks?.forEach { dependentTask -> AffectedModuleDetector.configureTaskGuard(dependentTask) } From 5a345d3f0a84bf6c1243c3b47395343f062f8a42 Mon Sep 17 00:00:00 2001 From: Josh Feinberg <15068619+joshafeinberg@users.noreply.github.com> Date: Tue, 19 Aug 2025 13:39:01 -0500 Subject: [PATCH 3/3] Fix sample app --- .../com/dropbox/affectedmoduledetector/DependencyTracker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt index 4554cdf..924b3e0 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/DependencyTracker.kt @@ -52,7 +52,7 @@ class DependencyTracker(rootProject: Project, logger: Logger?) : Serializable { result } - fun findAllDependents(projectPath: ProjectPath, logger: Logger?): Set { + fun findAllDependents(projectPath: ProjectPath, logger: Logger? = null): Set { logger?.info("finding dependents of $projectPath") val result = mutableSetOf() fun addAllDependents(projectPath: ProjectPath) {