Skip to content

Commit 1567b56

Browse files
author
Marcel Schnelle
authored
#56 Allow disabling Jacoco friend tasks based on plugin DSL (#59)
1 parent 98d95e8 commit 1567b56

File tree

3 files changed

+103
-2
lines changed

3 files changed

+103
-2
lines changed

android-junit5-tests/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,87 @@ class PluginSpec : Spek({
725725
}
726726
}
727727
}
728+
729+
context("restricting task generation") {
730+
val project by memoized { testProjectBuilder.build() }
731+
732+
on("disabling task generation altogether") {
733+
project.android.testOptions.junitPlatform {
734+
jacocoOptions {
735+
taskGenerationEnabled = false
736+
}
737+
}
738+
739+
project.evaluate()
740+
741+
listOf("jacocoTestReport", "jacocoTestReportDebug", "jacocoTestReportRelease")
742+
.forEach { task ->
743+
it("doesn't generate task '$task'") {
744+
assertThat(project.tasks.findByName(task)).isNull()
745+
}
746+
}
747+
}
748+
749+
on("specifying specific variants without product flavors") {
750+
project.android.testOptions.junitPlatform {
751+
jacocoOptions {
752+
onlyGenerateTasksForVariants("debug")
753+
}
754+
}
755+
756+
project.evaluate()
757+
758+
it("generates main task") {
759+
assertThat(project.tasks.findByName("jacocoTestReport")).isNotNull()
760+
}
761+
762+
it("generates debug task") {
763+
assertThat(project.tasks.findByName("jacocoTestReportDebug")).isNotNull()
764+
}
765+
766+
it("doesn't generate release task") {
767+
assertThat(project.tasks.findByName("jacocoTestReportRelease")).isNull()
768+
}
769+
}
770+
771+
on("specifying specific variants with product flavors") {
772+
project.android.flavorDimensions("tier")
773+
project.android.productFlavors {
774+
it.create("paid").dimension = "tier"
775+
it.create("free").dimension = "tier"
776+
}
777+
778+
project.android.testOptions.junitPlatform {
779+
jacocoOptions {
780+
onlyGenerateTasksForVariants("paidDebug", "freeRelease")
781+
}
782+
}
783+
784+
project.evaluate()
785+
786+
it("generates main task") {
787+
assertThat(project.tasks.findByName("jacocoTestReport")).isNotNull()
788+
}
789+
790+
listOf("paidDebug", "freeRelease")
791+
.forEach { generatedTask ->
792+
it("generates $generatedTask task") {
793+
assertThat(
794+
project.tasks.findByName("jacocoTestReport${generatedTask.capitalize()}"))
795+
.isNotNull()
796+
}
797+
}
798+
799+
listOf("paidRelease", "freeDebug")
800+
.forEach { filteredTask ->
801+
it("doesn't generate $filteredTask task") {
802+
assertThat(
803+
project.tasks.findByName("jacocoTestReport${filteredTask.capitalize()}"))
804+
.isNull()
805+
}
806+
}
807+
}
808+
}
728809
}
729810
}
730811
}

android-junit5/src/main/groovy/de/mannodermaus/gradle/plugins/junit5/AndroidJUnitPlatformExtension.groovy

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,13 +209,26 @@ class AndroidJUnitPlatformExtension extends JUnitPlatformExtension {
209209
@NonNull
210210
public List<String> excludedSources = []
211211

212+
@NonNull
213+
private List<String> onlyGenerateTasksForVariants = new ArrayList<>()
214+
public boolean taskGenerationEnabled = true
215+
212216
JacocoOptions(Project project) {
213217
this.project = project
214218
this.html = new Report()
215219
this.csv = new Report()
216220
this.xml = new Report()
217221
}
218222

223+
void onlyGenerateTasksForVariants(String... variantNames) {
224+
this.onlyGenerateTasksForVariants.addAll(variantNames)
225+
}
226+
227+
@NonNull
228+
List<String> onlyGenerateTasksForVariants() {
229+
return Collections.unmodifiableList(onlyGenerateTasksForVariants)
230+
}
231+
219232
void html(Closure closure) {
220233
ConfigureUtil.configure(closure, html)
221234
}

android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/Plugin.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,15 @@ class AndroidJUnitPlatformPlugin : Plugin<Project> {
100100
val testTask = AndroidJUnit5UnitTest.create(this, variant, directoryProviders)
101101

102102
if (isJacocoApplied) {
103-
// Create a Jacoco friend task
104-
AndroidJUnit5JacocoReport.create(this, testTask, directoryProviders)
103+
val jacocoOptions = junit5.jacocoOptions
104+
105+
if (jacocoOptions.taskGenerationEnabled) {
106+
// Create a Jacoco friend task
107+
val enabledVariants = jacocoOptions.onlyGenerateTasksForVariants()
108+
if (enabledVariants.isEmpty() || enabledVariants.contains(variant.name)) {
109+
AndroidJUnit5JacocoReport.create(this, testTask, directoryProviders)
110+
}
111+
}
105112
}
106113
}
107114
}

0 commit comments

Comments
 (0)