Skip to content

Commit 4ece87c

Browse files
vRallevvanniktech
authored andcommitted
Fix the class file location for the Android Gradle Plugin 3.0.0 (#90)
1 parent a2a95ff commit 4ece87c

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

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

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,9 @@ class GenerationPlugin implements Plugin<Project> {
6363
}
6464

6565
classDirectories = subProject.fileTree(
66-
dir: 'build/classes/', // Starting from Gradle 4.+ each language has it's own classes folder like build/classes/java/main or build/classes/java/test.
67-
excludes: getExcludes(extension) + '**/test/**' // We'll exclude the test directory.
66+
dir: subProject.buildDir,
67+
includes: ["**/classes/**"],
68+
excludes: getExcludes(extension)
6869
)
6970

7071
final def coverageSourceDirs = [
@@ -132,8 +133,14 @@ class GenerationPlugin implements Plugin<Project> {
132133
}
133134
}
134135

136+
def classPaths = ["**/intermediates/classes/${sourcePath}/**"]
137+
if (isKotlinAndroid(subProject)) {
138+
classPaths << "**/tmp/kotlin-classes/${sourcePath}/**"
139+
}
140+
135141
classDirectories = subProject.fileTree(
136-
dir: "${subProject.buildDir}/intermediates/classes/${sourcePath}",
142+
dir: subProject.buildDir,
143+
includes: classPaths,
137144
excludes: getExcludes(extension)
138145
)
139146

@@ -203,6 +210,10 @@ class GenerationPlugin implements Plugin<Project> {
203210
return project.plugins.hasPlugin('org.gradle.java')
204211
}
205212

213+
protected static boolean isKotlinAndroid(final Project project) {
214+
return project.plugins.hasPlugin('org.jetbrains.kotlin.android')
215+
}
216+
206217
private static boolean shouldIgnore(final Project project, final JunitJacocoExtension extension) {
207218
return extension.ignoreProjects?.contains(project.name)
208219
}

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ public class GenerationTest {
159159
assert reports.html.enabled
160160
assert reports.html.destination.toString() == project.buildDir.absolutePath + "/reports/jacoco/${flavor}${buildType.capitalize()}"
161161

162-
assert classDirectories.dir == project.file("build/intermediates/classes/${flavor}/${buildType}")
162+
assert classDirectories.dir == project.file("build/")
163+
assert contentEquals(classDirectories.includes, ["**/intermediates/classes/${flavor}/${buildType}/**".toString()])
163164

164165
assert taskDependsOn(task, "test${flavor.capitalize()}${buildType.capitalize()}UnitTest")
165166
assert taskDependsOn(project.tasks.findByName('check'), "jacocoTestReport${flavor.capitalize()}${buildType.capitalize()}")
@@ -198,7 +199,8 @@ public class GenerationTest {
198199
assert reports.html.enabled
199200
assert reports.html.destination.toString() == project.buildDir.absolutePath + '/reports/jacoco/debug'
200201

201-
assert classDirectories.dir == project.file('build/intermediates/classes/debug')
202+
assert classDirectories.dir == project.file("build/")
203+
assert contentEquals(classDirectories.includes, ['**/intermediates/classes/debug/**'])
202204

203205
assert taskDependsOn(debugTask, 'testDebugUnitTest')
204206
assert taskDependsOn(project.tasks.findByName('check'), 'jacocoTestReportDebug')
@@ -231,7 +233,8 @@ public class GenerationTest {
231233
assert reports.html.enabled
232234
assert reports.html.destination.toString() == project.buildDir.absolutePath + '/reports/jacoco/release'
233235

234-
assert classDirectories.dir == project.file('build/intermediates/classes/release')
236+
assert classDirectories.dir == project.file("build/")
237+
assert contentEquals(classDirectories.includes, ['**/intermediates/classes/release/**'])
235238

236239
assert taskDependsOn(releaseTask, 'testReleaseUnitTest')
237240
assert taskDependsOn(project.tasks.findByName('check'), 'jacocoTestReportRelease')
@@ -263,7 +266,8 @@ public class GenerationTest {
263266
assert sourceDirectories.contains(project.file("src/main/$it"))
264267
}
265268

266-
assert classDirectories.dir == project.file('build/classes/')
269+
assert classDirectories.dir == project.file('build/')
270+
assert contentEquals(classDirectories.includes, ["**/classes/**"])
267271

268272
assert reports.xml.enabled
269273
assert reports.html.enabled
@@ -272,13 +276,17 @@ public class GenerationTest {
272276
}
273277
}
274278

279+
static boolean contentEquals(Collection<?> c1, Collection<?> c2) {
280+
return c1.containsAll(c2) && c2.containsAll(c1)
281+
}
282+
275283
static boolean taskDependsOn(final Task task, final String taskName) {
276284
final def it = task.dependsOn.iterator()
277285

278286
while (it.hasNext()) {
279287
final def item = it.next()
280288

281-
if (item.toString().equals(taskName)) {
289+
if (item.toString() == taskName) {
282290
return true
283291
}
284292
}

0 commit comments

Comments
 (0)