From 9b7d98dd4ac2429e54a01c9ddfb509d704f51062 Mon Sep 17 00:00:00 2001 From: Josh Feinberg Date: Tue, 22 Feb 2022 15:51:17 -0600 Subject: [PATCH 1/3] Add check for if project is provided before adding dependent task --- .../AffectedModuleDetector.kt | 17 ++++++++++++----- .../AffectedModuleDetectorPlugin.kt | 4 +++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt index 396117b0..abe6f76b 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt @@ -107,7 +107,7 @@ abstract class AffectedModuleDetector { companion object { private const val ROOT_PROP_NAME = "AffectedModuleDetectorPlugin" - internal const val MODULES_ARG = "affected_module_detector.modules" + private const val MODULES_ARG = "affected_module_detector.modules" private const val DEPENDENT_PROJECTS_ARG = "affected_module_detector.dependentProjects" private const val CHANGED_PROJECTS_ARG = "affected_module_detector.changedProjects" private const val ENABLE_ARG = "affected_module_detector.enable" @@ -119,7 +119,7 @@ abstract class AffectedModuleDetector { "Project provided must be root, project was ${rootProject.path}" } - val enabled = rootProject.hasProperty(ENABLE_ARG) + val enabled = getEnabledProperty(rootProject) if (!enabled) { setInstance( rootProject, @@ -216,6 +216,10 @@ abstract class AffectedModuleDetector { ) } + private fun isProjectEnabled(project: Project): Boolean { + return project.hasProperty(ENABLE_ARG) + } + private fun getModulesProperty(project: Project): Set? { return if (project.hasProperty(MODULES_ARG)) { val commaDelimited = project.properties[MODULES_ARG] as String @@ -273,9 +277,12 @@ abstract class AffectedModuleDetector { */ @JvmStatic fun isProjectProvided(project: Project): Boolean { - return getOrThrow( - project - ).isProjectProvided2(project) + if (!isProjectEnabled(project)) { + // if we do not want to use affected module detector property then assume every project is provided + return true + } + val modules = getModulesProperty(project) + return modules?.contains(project.path) ?: true } } } diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt index a46098b8..291848ac 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetectorPlugin.kt @@ -92,7 +92,9 @@ class AffectedModuleDetectorPlugin : Plugin { private fun withPlugin(pluginId: String, task: Task, testType: TestType, project: Project) { project.pluginManager.withPlugin(pluginId) { getAffectedPath(testType, project)?.let { path -> - task.dependsOn(path) + if (AffectedModuleDetector.isProjectProvided(project)) { + task.dependsOn(path) + } project.afterEvaluate { project.tasks.findByPath(path)?.onlyIf { AffectedModuleDetector.isProjectAffected(project) From 2483fd614729b1a41cfb5f2a07209e7db852bf18 Mon Sep 17 00:00:00 2001 From: Josh Feinberg Date: Tue, 22 Feb 2022 15:55:35 -0600 Subject: [PATCH 2/3] Fix function name --- .../dropbox/affectedmoduledetector/AffectedModuleDetector.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt index abe6f76b..7b900045 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt @@ -119,7 +119,7 @@ abstract class AffectedModuleDetector { "Project provided must be root, project was ${rootProject.path}" } - val enabled = getEnabledProperty(rootProject) + val enabled = isProjectEnabled(rootProject) if (!enabled) { setInstance( rootProject, From 7c872e360bcfc538b4b57ce72498f27586138d00 Mon Sep 17 00:00:00 2001 From: Josh Feinberg Date: Fri, 25 Feb 2022 10:55:59 -0600 Subject: [PATCH 3/3] Ensure using root project --- .../dropbox/affectedmoduledetector/AffectedModuleDetector.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt index 7b900045..25ac547c 100644 --- a/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt +++ b/affectedmoduledetector/src/main/kotlin/com/dropbox/affectedmoduledetector/AffectedModuleDetector.kt @@ -277,11 +277,12 @@ abstract class AffectedModuleDetector { */ @JvmStatic fun isProjectProvided(project: Project): Boolean { - if (!isProjectEnabled(project)) { + val rootProject = project.rootProject + if (!isProjectEnabled(rootProject)) { // if we do not want to use affected module detector property then assume every project is provided return true } - val modules = getModulesProperty(project) + val modules = getModulesProperty(rootProject) return modules?.contains(project.path) ?: true } }