Skip to content

Commit 89c8389

Browse files
committed
Fix Jacoco coverage and JacocoFullCoverage tasks
- A bug as reported on a relative repository vanniktech/gradle-android-junit-jacoco-plugin#183 prevents jacoco exec coverage file from being generated when android.buildTypes.debug.testCoverageEnabled is true - Disabled the createDebugCoverageReport from the jacocoTestReport therefore disabling running of instrumentation tests
1 parent ab02d0e commit 89c8389

File tree

6 files changed

+47
-32
lines changed

6 files changed

+47
-32
lines changed

build.gradle

+22-19
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ buildscript {
2121
}
2222
}
2323

24-
//apply plugin: 'com.palantir.jacoco-full-report'
2524
apply plugin: 'com.github.kt3k.coveralls'
2625

2726

@@ -58,7 +57,7 @@ ext {
5857
compileSdkVersion = 28
5958
volleyVersion = "1.1.0"
6059
targetSdkVersion = 27
61-
jacocoVersion = "0.8.7"
60+
jacocoVersion = "0.8.8"
6261
mapboxSdkVersion = "8.3.3"
6362
mapboxAnnotationPluginVersion = "0.6.0"
6463
}
@@ -71,47 +70,51 @@ coveralls {
7170
, "wrapper/src/main/java"]
7271
}
7372

74-
task jacocoFullReport(type: JacocoReport, group: 'Coverage reports') {
73+
task jacocoFullReport(type: JacocoReport, group: 'Coverage reports', dependsOn: ':utils:jacocoTestReport') {
7574
description = 'Generates an aggregate report from all subprojects'
7675

7776
additionalSourceDirs.from = files(subprojects.sourceSets.main.allSource.srcDirs)
7877
sourceDirectories.from = files(subprojects.sourceSets.main.allSource.srcDirs)
7978
classDirectories.from = files(subprojects.sourceSets.main.output)
8079

81-
def index = 0
82-
for (dir in additionalSourceDirs) {
83-
System.out.println( (index + 1) + ". " + dir.path)
84-
}
85-
86-
index = 0
87-
for (dir in sourceDirectories) {
88-
System.out.println( (index + 1) + ". " + dir.path)
89-
}
90-
91-
index = 0
92-
for (dir in classDirectories) {
93-
System.out.println( (index + 1) + ". " + dir.path)
94-
}
9580

9681
List<File> executionDataPaths = new ArrayList<>()
82+
List<File> classPaths = new ArrayList<>()
83+
List<File> sourcePaths = new ArrayList<>()
84+
List<File> jacocoClasspathPaths = new ArrayList<>()
85+
9786
for (subModule in subprojects) {
9887
def jacocoTestReportTask = subModule.getTasksByName("jacocoTestReport", false)
9988
jacocoTestReportTask.forEach({task ->
10089
if (task instanceof JacocoReport) {
101-
System.out.println("This is a JacocoReport task: " + task.name)
10290
executionDataPaths.addAll((task as JacocoReport).executionData.getFiles())
91+
classPaths.addAll((task as JacocoReport).classDirectories)
92+
sourcePaths.addAll((task as JacocoReport).sourceDirectories)
93+
jacocoClasspathPaths.addAll((task as JacocoReport).jacocoClasspath)
10394
}
10495
})
10596
}
10697

10798
executionData.from = executionDataPaths
99+
sourceDirectories.from = sourcePaths
100+
classDirectories.from = classPaths
108101

109-
getReports().getXml().setDestination(file("${buildDir}/reports/jacoco/jacocoFullReport/merged.xml"))
102+
getReports().getXml().setDestination(file("${buildDir}/reports/jacoco/jacocoFullReport/jacocoFullReport.xml"))
110103
getReports().getHtml().setDestination(file("${buildDir}/reports/jacoco/jacocoFullReport/html"))
111104

112105
reports {
113106
html.enabled true
114107
xml.enabled true
115108
}
109+
110+
jacocoClasspath = files(jacocoClasspathPaths)
116111
}
117112

113+
114+
task printClasspath {
115+
doLast {
116+
this.printClasspath
117+
}
118+
119+
def task = org.gradle.testing.jacoco.tasks.JacocoReport()
120+
}

library/build.gradle

+5-3
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ android {
7070
}
7171

7272
debug {
73-
testCoverageEnabled true
73+
// See bug https://github.com/vanniktech/gradle-android-junit-jacoco-plugin/issues/183
74+
testCoverageEnabled false
7475

7576
if (project.rootProject.file("local.properties").exists()) {
7677
Properties properties = new Properties()
@@ -178,7 +179,8 @@ tasks.withType(Test) {
178179
jacoco.excludes = ['jdk.internal.*']
179180
}
180181

181-
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
182+
// createDebugCoverageReport is not available when android.buildTypes.debug.testCoverageEnabled is false
183+
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) { //, 'createDebugCoverageReport']) {
182184

183185
reports {
184186
xml.enabled = true
@@ -190,7 +192,7 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea
190192

191193
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*'
192194
, 'android/**/*.*', "io/realm/*.*"]
193-
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/compileDebugJavaWithJavac/classes", excludes: fileFilter)
195+
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter)
194196
def mainSrc = "${project.projectDir}/src/main/java"
195197

196198
sourceDirectories.setFrom([mainSrc])

sample/build.gradle

+5-3
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ android {
139139
}
140140

141141
debug {
142-
testCoverageEnabled true
142+
// See bug https://github.com/vanniktech/gradle-android-junit-jacoco-plugin/issues/183
143+
testCoverageEnabled false
143144
buildConfigField "String", "MAPBOX_SDK_ACCESS_TOKEN", properties["mapbox.sdk.token"]
144145
buildConfigField "String", "CGR_USERNAME", properties["cgr.username"]
145146
buildConfigField "String", "CGR_PASSWORD", properties["cgr.password"]
@@ -242,7 +243,8 @@ tasks.withType(Test) {
242243
jacoco.excludes = ['jdk.internal.*']
243244
}
244245

245-
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
246+
// createDebugCoverageReport is not available when android.buildTypes.debug.testCoverageEnabled is false
247+
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) { //, 'createDebugCoverageReport']) {
246248

247249
reports {
248250
xml.enabled = true
@@ -254,7 +256,7 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea
254256

255257
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*'
256258
, 'android/**/*.*', "io/realm/*.*", "io/ona/kujaku/sample/activities/*.*"]
257-
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/compileDebugJavaWithJavac/classes", excludes: fileFilter)
259+
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter)
258260
def mainSrc = "${project.projectDir}/src/main/java"
259261

260262
sourceDirectories.setFrom(files([mainSrc]))

utils/build.gradle

+10-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ android {
3636
}
3737

3838
debug {
39-
testCoverageEnabled true
39+
// See bug https://github.com/vanniktech/gradle-android-junit-jacoco-plugin/issues/183
40+
testCoverageEnabled false
4041
}
4142
}
4243

@@ -68,9 +69,11 @@ dependencies {
6869

6970
tasks.withType(Test) {
7071
jacoco.includeNoLocationClasses = true
72+
jacoco.excludes = ['jdk.internal.*']
7173
}
7274

73-
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
75+
// createDebugCoverageReport is not available when android.buildTypes.debug.testCoverageEnabled is false
76+
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) { //, 'createDebugCoverageReport']) {
7477

7578
reports {
7679
xml.enabled = true
@@ -82,7 +85,7 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea
8285

8386
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*'
8487
, 'android/**/*.*', "io/realm/*.*"]
85-
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/compileDebugJavaWithJavac/classes", excludes: fileFilter)
88+
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter)
8689
def mainSrc = "${project.projectDir}/src/main/java"
8790

8891
sourceDirectories.setFrom(files([mainSrc]))
@@ -92,5 +95,9 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea
9295
]))
9396
}
9497

98+
task printTasks {
99+
System.out.println("Jacoco version ${jacoco.toolVersion}")
100+
}
101+
95102
// Add github packages, maven-central and sonatype publishing
96103
apply from: '../publish.gradle'

utils/src/test/java/io/ona/kujaku/helpers/MapBoxStyleHelperTest.java

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
*/
2323

2424
@RunWith(RobolectricTestRunner.class)
25-
@Config(manifest = Config.NONE)
2625
public class MapBoxStyleHelperTest {
2726

2827
/**

wrapper/build.gradle

+5-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ android {
3939
}
4040

4141
debug {
42-
testCoverageEnabled true
42+
// See bug https://github.com/vanniktech/gradle-android-junit-jacoco-plugin/issues/183
43+
testCoverageEnabled false
4344
}
4445
}
4546

@@ -69,7 +70,8 @@ tasks.withType(Test) {
6970
jacoco.excludes = ['jdk.internal.*']
7071
}
7172

72-
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
73+
// createDebugCoverageReport is not available when android.buildTypes.debug.testCoverageEnabled is false
74+
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) { //, 'createDebugCoverageReport']) {
7375

7476
reports {
7577
xml.enabled = true
@@ -81,7 +83,7 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea
8183

8284
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*'
8385
, 'android/**/*.*', "io/realm/*.*"]
84-
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/compileDebugJavaWithJavac/classes", excludes: fileFilter)
86+
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter)
8587
def mainSrc = "${project.projectDir}/src/main/java"
8688

8789
sourceDirectories.setFrom(files([mainSrc]))

0 commit comments

Comments
 (0)