Skip to content

Commit 03740e5

Browse files
authored
Support all the Android / Java plugins. (#124)
1 parent 203d027 commit 03740e5

File tree

5 files changed

+55
-73
lines changed

5 files changed

+55
-73
lines changed

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

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ class GenerationPlugin implements Plugin<Project> {
4343

4444
protected static boolean addJacoco(final Project subProject, final JunitJacocoExtension extension, JacocoMerge mergeTask, JacocoReport mergedReportTask) {
4545
if (!shouldIgnore(subProject, extension)) {
46-
if (isAndroidApplication(subProject) || isAndroidLibrary(subProject) ||
47-
isAndroidFeature(subProject) || isAndroidInstantApp(subProject)) {
46+
if (isAndroidProject(subProject)) {
4847
addJacocoAndroid(subProject, extension, mergeTask, mergedReportTask)
4948
return true
5049
} else if (isJavaProject(subProject)) {
@@ -120,7 +119,7 @@ class GenerationPlugin implements Plugin<Project> {
120119
Collection<BaseVariant> variants = []
121120
if (isAndroidApplication(subProject)) {
122121
variants = subProject.android.applicationVariants
123-
} else if (isAndroidLibrary(subProject)) {
122+
} else {
124123
variants = subProject.android.libraryVariants
125124
}
126125

@@ -293,30 +292,30 @@ class GenerationPlugin implements Plugin<Project> {
293292
] : extension.excludes
294293
}
295294

296-
protected static boolean isAndroidLibrary(final Project project) {
297-
return project.plugins.hasPlugin('com.android.library')
298-
}
299-
300-
protected static boolean isAndroidApplication(final Project project) {
301-
return project.plugins.hasPlugin('com.android.application')
302-
}
303-
304-
protected static boolean isJavaProject(final Project project) {
305-
return project.plugins.hasPlugin('org.gradle.java')
295+
private static boolean isAndroidProject(final Project project) {
296+
final boolean isAndroidLibrary = project.plugins.hasPlugin('com.android.library')
297+
final boolean isAndroidApp = project.plugins.hasPlugin('com.android.application')
298+
final boolean isAndroidTest = project.plugins.hasPlugin('com.android.test')
299+
final boolean isAndroidFeature = project.plugins.hasPlugin('com.android.feature')
300+
final boolean isAndroidInstantApp = project.plugins.hasPlugin('com.android.instantapp')
301+
return isAndroidLibrary || isAndroidApp || isAndroidTest || isAndroidFeature || isAndroidInstantApp
306302
}
307303

308-
protected static boolean isAndroidInstantApp(final Project project) {
309-
return project.plugins.hasPlugin('com.android.instantapp')
310-
}
311-
312-
protected static boolean isAndroidFeature(final Project project) {
313-
return project.plugins.hasPlugin('com.android.feature')
304+
private static boolean isJavaProject(final Project project) {
305+
final boolean isJava = project.plugins.hasPlugin('java')
306+
final boolean isJavaLibrary = project.plugins.hasPlugin('java-library')
307+
final boolean isJavaGradlePlugin = project.plugins.hasPlugin('java-gradle-plugin')
308+
return isJava || isJavaLibrary || isJavaGradlePlugin
314309
}
315310

316311
protected static boolean isKotlinAndroid(final Project project) {
317312
return project.plugins.hasPlugin('org.jetbrains.kotlin.android')
318313
}
319314

315+
protected static boolean isAndroidApplication(final Project project) {
316+
return project.plugins.hasPlugin('com.android.application')
317+
}
318+
320319
private static boolean shouldIgnore(final Project project, final JunitJacocoExtension extension) {
321320
if (extension.ignoreProjects?.contains(project.name) || extension.ignoreProjects?.contains(project.path)) {
322321
// Regex could be slower.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import spock.lang.Specification
55
import spock.lang.Unroll
66

77
final class GenerationPluginSpec extends Specification {
8-
final static ANDROID_PLUGINS = ["com.android.application", "com.android.library", "com.android.test"]
8+
final static ANDROID_PLUGINS = ["com.android.application", "com.android.library", "com.android.test", "com.android.feature"]
99
final static COMPILE_SDK_VERSION = 27
1010
final static BUILD_TOOLS_VERSION = "27.0.1"
1111
final static APPLICATION_ID = "com.example"

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

Lines changed: 18 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,56 +8,50 @@ import org.junit.Test
88

99
import static com.vanniktech.android.junit.jacoco.ProjectHelper.ProjectType.*
1010

11-
public class GenerationTest {
12-
def LANGUAGES = ["clojure", "groovy", "java", "kotlin", "scala"]
11+
class GenerationTest {
12+
def LANGUAGES = ["clojure", "groovy", "java", "kotlin", "scala"]
1313

14-
@Test
15-
public void addJacocoAndroidAppWithFlavors() {
14+
@Test void addJacocoAndroidAppWithFlavors() {
1615
def androidAppProject = ProjectHelper.prepare(ANDROID_APPLICATION).withRedBlueFlavors().get()
1716

1817
GenerationPlugin.addJacoco(androidAppProject, new JunitJacocoExtension())
1918

2019
assertJacocoAndroidWithFlavors(androidAppProject)
2120
}
2221

23-
@Test
24-
public void addJacocoAndroidLibraryWithFlavors() {
22+
@Test void addJacocoAndroidLibraryWithFlavors() {
2523
def androidLibraryProject = ProjectHelper.prepare(ANDROID_LIBRARY).withRedBlueFlavors().get()
2624

2725
GenerationPlugin.addJacoco(androidLibraryProject, new JunitJacocoExtension())
2826

2927
assertJacocoAndroidWithFlavors(androidLibraryProject)
3028
}
3129

32-
@Test
33-
public void addJacocoAndroidApp() {
30+
@Test void addJacocoAndroidApp() {
3431
def androidAppProject = ProjectHelper.prepare(ANDROID_APPLICATION).get()
3532

3633
GenerationPlugin.addJacoco(androidAppProject, new JunitJacocoExtension())
3734

3835
assertJacocoAndroidWithoutFlavors(androidAppProject)
3936
}
4037

41-
@Test
42-
public void addJacocoAndroidLibrary() {
38+
@Test void addJacocoAndroidLibrary() {
4339
def androidLibraryProject = ProjectHelper.prepare(ANDROID_LIBRARY).get()
4440

4541
GenerationPlugin.addJacoco(androidLibraryProject, new JunitJacocoExtension())
4642

4743
assertJacocoAndroidWithoutFlavors(androidLibraryProject)
4844
}
4945

50-
@Test
51-
public void addJacocoJava() {
46+
@Test void addJacocoJava() {
5247
def javaProject = ProjectHelper.prepare(JAVA).get()
5348

5449
GenerationPlugin.addJacoco(javaProject, new JunitJacocoExtension())
5550

5651
assertJacocoJava(javaProject)
5752
}
5853

59-
@Test
60-
public void jacocoVersion() {
54+
@Test void jacocoVersion() {
6155
final def extension = new JunitJacocoExtension()
6256
extension.jacocoVersion = '0.7.6.201602180812'
6357
def androidAppProject = ProjectHelper.prepare(ANDROID_APPLICATION).get()
@@ -73,8 +67,7 @@ public class GenerationTest {
7367
assert javaProject.jacoco.toolVersion == extension.jacocoVersion
7468
}
7569

76-
@Test
77-
public void ignoreProjects() {
70+
@Test void ignoreProjects() {
7871
final def extension = new JunitJacocoExtension()
7972
final def projects = [
8073
ProjectHelper.prepare(ANDROID_APPLICATION).get(),
@@ -89,8 +82,7 @@ public class GenerationTest {
8982
}
9083
}
9184

92-
@Test
93-
public void ignoreProjectsPath() {
85+
@Test void ignoreProjectsPath() {
9486
final def extension = new JunitJacocoExtension()
9587
final def projects = [
9688
ProjectHelper.prepare(ANDROID_APPLICATION).get(),
@@ -105,8 +97,7 @@ public class GenerationTest {
10597
}
10698
}
10799

108-
@Test
109-
public void ignoreProjectsRegexPath() {
100+
@Test void ignoreProjectsRegexPath() {
110101
final def extension = new JunitJacocoExtension()
111102
final def projects = [
112103
ProjectHelper.prepare(ANDROID_APPLICATION).get(),
@@ -121,8 +112,7 @@ public class GenerationTest {
121112
}
122113
}
123114

124-
@Test
125-
public void ignoreProjectsRegexName() {
115+
@Test void ignoreProjectsRegexName() {
126116
final def extension = new JunitJacocoExtension()
127117
final def projects = [
128118
ProjectHelper.prepare(ANDROID_APPLICATION).get(),
@@ -136,8 +126,7 @@ public class GenerationTest {
136126
}
137127
}
138128

139-
@Test
140-
public void ignoreProjectsWrongRegexName() {
129+
@Test void ignoreProjectsWrongRegexName() {
141130
final def extension = new JunitJacocoExtension()
142131
final def projects = [
143132
ProjectHelper.prepare(ANDROID_APPLICATION).get(),
@@ -151,8 +140,7 @@ public class GenerationTest {
151140
}
152141
}
153142

154-
@Test
155-
public void androidAppBuildExecutesJacocoTask() {
143+
@Test void androidAppBuildExecutesJacocoTask() {
156144
def androidAppProject = ProjectHelper.prepare(ANDROID_APPLICATION).get()
157145

158146
GenerationPlugin.addJacoco(androidAppProject, new JunitJacocoExtension())
@@ -161,8 +149,7 @@ public class GenerationTest {
161149
assert taskDependsOn(androidAppProject.check, 'jacocoTestReportRelease')
162150
}
163151

164-
@Test
165-
public void androidLibraryBuildExecutesJacocoTask() {
152+
@Test void androidLibraryBuildExecutesJacocoTask() {
166153
def androidLibraryProject = ProjectHelper.prepare(ANDROID_LIBRARY).get()
167154

168155
GenerationPlugin.addJacoco(androidLibraryProject, new JunitJacocoExtension())
@@ -171,8 +158,7 @@ public class GenerationTest {
171158
assert taskDependsOn(androidLibraryProject.check, 'jacocoTestReportRelease')
172159
}
173160

174-
@Test
175-
public void javaBuildExecutesJacocoTask() {
161+
@Test void javaBuildExecutesJacocoTask() {
176162
def javaProject = ProjectHelper.prepare(JAVA).get()
177163

178164
GenerationPlugin.addJacoco(javaProject, new JunitJacocoExtension())
@@ -363,8 +349,7 @@ public class GenerationTest {
363349
return false
364350
}
365351

366-
@Test
367-
public void getExcludesDefault() {
352+
@Test void getExcludesDefault() {
368353
final def excludes = GenerationPlugin.getExcludes(new JunitJacocoExtension())
369354

370355
assert excludes.size == 20
@@ -390,8 +375,7 @@ public class GenerationTest {
390375
assert excludes.contains('**/*AutoValue_*.*')
391376
}
392377

393-
@Test
394-
public void getExcludesCustom() {
378+
@Test void getExcludesCustom() {
395379
final def extension = new JunitJacocoExtension()
396380
extension.excludes = new ArrayList<>()
397381
extension.excludes.add("**/*.java")

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@ package com.vanniktech.android.junit.jacoco
22

33
import org.junit.Test
44

5-
public class JunitJacocoExtensionTest {
6-
@Test
7-
public void defaults() {
8-
def extension = new JunitJacocoExtension()
5+
class JunitJacocoExtensionTest {
6+
@Test void defaults() {
7+
def extension = new JunitJacocoExtension()
98

10-
assert extension.jacocoVersion == '0.7.2.201409121644'
11-
assert extension.ignoreProjects.size() == 0
12-
assert extension.excludes == null
13-
assert !extension.includeNoLocationClasses
14-
}
9+
assert extension.jacocoVersion == '0.7.2.201409121644'
10+
assert extension.ignoreProjects.size() == 0
11+
assert extension.excludes == null
12+
assert !extension.includeNoLocationClasses
13+
}
1514
}

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ import org.gradle.testfixtures.ProjectBuilder
1010

1111
/** Provides projects for testing */
1212
final class ProjectHelper {
13-
public static ProjectHelper prepare(ProjectType projectType) {
13+
static ProjectHelper prepare(ProjectType projectType) {
1414
return new ProjectHelper(projectType)
1515
}
1616

17-
private final ProjectType projectType;
18-
private final Project project;
17+
private final ProjectType projectType
18+
private final Project project
1919

2020
private ProjectHelper(ProjectType projectType) {
21-
this.projectType = projectType;
21+
this.projectType = projectType
2222

2323
switch (projectType) {
2424
case ProjectType.JAVA:
@@ -72,7 +72,7 @@ final class ProjectHelper {
7272
}
7373

7474
/** Adds flavors to project, only for Android based projects */
75-
public ProjectHelper withRedBlueFlavors() {
75+
ProjectHelper withRedBlueFlavors() {
7676
if (projectType == ProjectType.JAVA) {
7777
throw new UnsupportedOperationException('Not supported with Java project')
7878
}
@@ -112,19 +112,19 @@ final class ProjectHelper {
112112
return this
113113
}
114114

115-
public Project get() {
115+
Project get() {
116116
return project
117117
}
118118

119-
public enum ProjectType {
119+
enum ProjectType {
120120
ANDROID_APPLICATION('com.android.application'),
121121
ANDROID_LIBRARY('com.android.library'),
122-
JAVA('java');
122+
JAVA('java')
123123

124-
private final String pluginName;
124+
private final String pluginName
125125

126126
ProjectType(String pluginName) {
127-
this.pluginName = pluginName;
127+
this.pluginName = pluginName
128128
}
129129
}
130130
}

0 commit comments

Comments
 (0)