Skip to content

Commit

Permalink
Don't analyze test source when test analysis is disabled.
Browse files Browse the repository at this point in the history
  • Loading branch information
autonomousapps committed Nov 15, 2022
1 parent 63894fa commit 2bcf598
Showing 1 changed file with 23 additions and 10 deletions.
33 changes: 23 additions & 10 deletions src/main/kotlin/com/autonomousapps/subplugin/ProjectPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package com.autonomousapps.subplugin

import com.android.build.gradle.AppExtension
import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.api.BaseVariant
import com.android.build.gradle.internal.api.TestedVariant
import com.android.builder.model.SourceProvider
import com.autonomousapps.DependencyAnalysisExtension
import com.autonomousapps.DependencyAnalysisSubExtension
Expand All @@ -13,6 +15,7 @@ import com.autonomousapps.internal.analyzer.*
import com.autonomousapps.internal.android.AgpVersion
import com.autonomousapps.internal.utils.flatMapToSet
import com.autonomousapps.internal.utils.log
import com.autonomousapps.internal.utils.mapToSet
import com.autonomousapps.internal.utils.toJson
import com.autonomousapps.model.declaration.Configurations
import com.autonomousapps.model.declaration.SourceSetKind
Expand Down Expand Up @@ -849,23 +852,33 @@ internal class ProjectPlugin(private val project: Project) {
*/
private fun Project.supportedSourceSetNames() = provider {
if (pluginManager.hasPlugin(ANDROID_APP_PLUGIN)) {
the<AppExtension>().applicationVariants.flatMapToSet { app ->
app.sourceSets.map { sourceSet -> sourceSet.name } +
(app.unitTestVariant?.sourceSets?.map { sourceSet -> sourceSet.name } ?: emptySet()) +
(app.testVariant?.sourceSets?.map { sourceSet -> sourceSet.name } ?: emptySet())
}
the<AppExtension>().applicationVariants.flatMapToSet { sourceSetsForVariant(it) }
} else if (pluginManager.hasPlugin(ANDROID_LIBRARY_PLUGIN)) {
the<LibraryExtension>().libraryVariants.flatMapToSet { lib ->
lib.sourceSets.map { sourceSet -> sourceSet.name } +
(lib.unitTestVariant?.sourceSets?.map { sourceSet -> sourceSet.name } ?: emptySet()) +
(lib.testVariant?.sourceSets?.map { sourceSet -> sourceSet.name } ?: emptySet())
}
the<LibraryExtension>().libraryVariants.flatMapToSet { sourceSetsForVariant(it) }
} else {
// JVM Plugins - at some point 'the<SourceSetContainer>().names' should be supported for JVM projects
setOf(SourceSet.MAIN_SOURCE_SET_NAME, SourceSet.TEST_SOURCE_SET_NAME)
}
}

private fun <T> Project.sourceSetsForVariant(variant: T): Set<String> where T : BaseVariant, T : TestedVariant {
val shouldAnalyzeTests = shouldAnalyzeTests()

val mainSources = variant.sourceSets.mapToSet { sourceSet -> sourceSet.name }
val unitTestSources = if (shouldAnalyzeTests) {
variant.unitTestVariant?.sourceSets?.mapToSet { sourceSet -> sourceSet.name } ?: emptySet()
} else {
emptySet()
}
val androidTestSources = if (shouldAnalyzeTests) {
variant.testVariant?.sourceSets?.mapToSet { sourceSet -> sourceSet.name } ?: emptySet()
} else {
emptySet()
}

return mainSources + unitTestSources + androidTestSources
}

/** Publishes an artifact for consumption by the root project. */
private fun Project.publishArtifact(
producerConfName: String,
Expand Down

0 comments on commit 2bcf598

Please sign in to comment.