Skip to content

Commit 710f130

Browse files
vRallevvanniktech
authored andcommitted
Don't apply the plugin for Android test projects (#130)
1 parent 739b0e0 commit 710f130

File tree

3 files changed

+44
-7
lines changed

3 files changed

+44
-7
lines changed

src/main/groovy/com/vanniktech/android/junit/jacoco/GenerationPlugin.groovy

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,16 @@ class GenerationPlugin implements Plugin<Project> {
4444
protected static boolean addJacoco(final Project subProject, final JunitJacocoExtension extension, JacocoMerge mergeTask, JacocoReport mergedReportTask) {
4545
if (!shouldIgnore(subProject, extension)) {
4646
if (isAndroidProject(subProject)) {
47-
addJacocoAndroid(subProject, extension, mergeTask, mergedReportTask)
48-
return true
47+
return addJacocoAndroid(subProject, extension, mergeTask, mergedReportTask)
4948
} else if (isJavaProject(subProject)) {
50-
addJacocoJava(subProject, extension, mergeTask, mergedReportTask)
51-
return true
49+
return addJacocoJava(subProject, extension, mergeTask, mergedReportTask)
5250
}
5351
}
5452

5553
return false
5654
}
5755

58-
private static void addJacocoJava(final Project subProject, final JunitJacocoExtension extension, JacocoMerge mergeTask, JacocoReport mergedReportTask) {
56+
private static boolean addJacocoJava(final Project subProject, final JunitJacocoExtension extension, JacocoMerge mergeTask, JacocoReport mergedReportTask) {
5957
subProject.plugins.apply('jacoco')
6058

6159
subProject.jacoco {
@@ -103,9 +101,10 @@ class GenerationPlugin implements Plugin<Project> {
103101
}
104102

105103
subProject.check.dependsOn 'jacocoTestReport'
104+
return true
106105
}
107106

108-
private static void addJacocoAndroid(final Project subProject, final JunitJacocoExtension extension, JacocoMerge mergeTask, JacocoReport mergedReportTask) {
107+
private static boolean addJacocoAndroid(final Project subProject, final JunitJacocoExtension extension, JacocoMerge mergeTask, JacocoReport mergedReportTask) {
109108
subProject.plugins.apply('jacoco')
110109

111110
subProject.jacoco {
@@ -119,8 +118,12 @@ class GenerationPlugin implements Plugin<Project> {
119118
Collection<BaseVariant> variants = []
120119
if (isAndroidApplication(subProject)) {
121120
variants = subProject.android.applicationVariants
122-
} else {
121+
} else if (isAndroidLibrary(subProject) || isAndroidFeature(subProject)) {
122+
// FeatureExtension extends LibraryExtension
123123
variants = subProject.android.libraryVariants
124+
} else {
125+
// test plugin or something else
126+
return false
124127
}
125128

126129
variants.all { variant ->
@@ -213,6 +216,8 @@ class GenerationPlugin implements Plugin<Project> {
213216

214217
subProject.check.dependsOn "${taskName}"
215218
}
219+
220+
return true
216221
}
217222

218223
private static addJacocoMergeToRootProject(final Project project, final JunitJacocoExtension extension) {
@@ -316,6 +321,14 @@ class GenerationPlugin implements Plugin<Project> {
316321
return project.plugins.hasPlugin('com.android.application')
317322
}
318323

324+
protected static boolean isAndroidLibrary(final Project project) {
325+
return project.plugins.hasPlugin('com.android.library')
326+
}
327+
328+
protected static boolean isAndroidFeature(final Project project) {
329+
return project.plugins.hasPlugin('com.android.feature')
330+
}
331+
319332
private static boolean shouldIgnore(final Project project, final JunitJacocoExtension extension) {
320333
if (extension.ignoreProjects?.contains(project.name) || extension.ignoreProjects?.contains(project.path)) {
321334
// Regex could be slower.

src/test/groovy/com/vanniktech/android/junit/jacoco/GenerationTest.groovy

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,19 @@ class GenerationTest {
4343
assertJacocoAndroidWithoutFlavors(androidLibraryProject)
4444
}
4545

46+
@Test void addJacocoAndroidFeature() {
47+
def androidLibraryProject = ProjectHelper.prepare(ANDROID_FEATURE).get()
48+
49+
GenerationPlugin.addJacoco(androidLibraryProject, new JunitJacocoExtension())
50+
51+
assertJacocoAndroidWithoutFlavors(androidLibraryProject)
52+
}
53+
54+
@Test void addJacocoAndroidTest() {
55+
def androidTestProject = ProjectHelper.prepare(ANDROID_TEST).get()
56+
assert !GenerationPlugin.addJacoco(androidTestProject, new JunitJacocoExtension())
57+
}
58+
4659
@Test void addJacocoJava() {
4760
def javaProject = ProjectHelper.prepare(JAVA).get()
4861

src/test/groovy/com/vanniktech/android/junit/jacoco/ProjectHelper.groovy

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.vanniktech.android.junit.jacoco
22

33
import com.android.build.gradle.AppExtension
44
import com.android.build.gradle.LibraryExtension
5+
import com.android.build.gradle.TestExtension
56
import com.android.build.gradle.api.BaseVariant
67
import com.android.builder.model.BuildType
78
import groovy.mock.interceptor.MockFor
@@ -46,6 +47,7 @@ final class ProjectHelper {
4647
project.android.applicationVariants.metaClass.all = { delegate.each(it) }
4748
break
4849
case ProjectType.ANDROID_LIBRARY:
50+
case ProjectType.ANDROID_FEATURE:
4951
project = ProjectBuilder.builder().withName('android library').build()
5052
def androidMock = new MockFor(LibraryExtension)
5153
def buildTypesMock = ["debug", "release"].collect { bt ->
@@ -66,6 +68,12 @@ final class ProjectHelper {
6668
// mock .all{ } function from android gradle lib with standard groovy .each{ }
6769
project.android.libraryVariants.metaClass.all = { delegate.each(it) }
6870
break
71+
case ProjectType.ANDROID_TEST:
72+
project = ProjectBuilder.builder().withName('android test').build()
73+
def androidMock = new MockFor(TestExtension)
74+
androidMock.metaClass.testOptions = null
75+
project.metaClass.android = androidMock
76+
break
6977
}
7078

7179
project.plugins.apply(projectType.pluginName)
@@ -103,6 +111,7 @@ final class ProjectHelper {
103111
project.android.applicationVariants.metaClass.all = { delegate.each(it) }
104112
break
105113
case ProjectType.ANDROID_LIBRARY:
114+
case ProjectType.ANDROID_FEATURE:
106115
project.android.metaClass.libraryVariants = variants
107116
// mock .all{ } function from android gradle lib with standard groovy .each{ }
108117
project.android.libraryVariants.metaClass.all = { delegate.each(it) }
@@ -119,6 +128,8 @@ final class ProjectHelper {
119128
enum ProjectType {
120129
ANDROID_APPLICATION('com.android.application'),
121130
ANDROID_LIBRARY('com.android.library'),
131+
ANDROID_FEATURE('com.android.feature'),
132+
ANDROID_TEST('com.android.test'),
122133
JAVA('java')
123134

124135
private final String pluginName

0 commit comments

Comments
 (0)