summaryrefslogtreecommitdiff
path: root/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-03-20 13:09:59 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-03-20 14:00:30 +0100
commit52467695b1534a8098e8936a3a849c02b2ff98c4 (patch)
tree52ec323291fbfe427edd90affb8d0194d01e1990 /simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
parentdd24782f3710678151c80f8ad365eecc7389b6f8 (diff)
build: Add support for aggregate code coverage results
This change adds support for aggregating code coverage results from the different modules.
Diffstat (limited to 'simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts')
-rw-r--r--simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts33
1 files changed, 33 insertions, 0 deletions
diff --git a/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
index e0bc2ce4..d0534d4f 100644
--- a/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
+++ b/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
@@ -30,3 +30,36 @@ tasks.jacocoTestReport {
html.isEnabled = true
}
}
+
+/* Share sources folder with other projects for aggregated JaCoCo reports */
+configurations.create("transitiveSourcesElements") {
+ isVisible = false
+ isCanBeResolved = false
+ isCanBeConsumed = true
+ extendsFrom(configurations.implementation.get())
+ attributes {
+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
+ attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("source-folders"))
+ }
+ sourceSets.main.get().java.srcDirs.forEach {
+ outgoing.artifact(it)
+ }
+}
+
+/* Share the coverage data to be aggregated for the whole product */
+configurations.create("coverageDataElements") {
+ isVisible = false
+ isCanBeResolved = false
+ isCanBeConsumed = true
+ extendsFrom(configurations.implementation.get())
+ attributes {
+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
+ attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("jacoco-coverage-data"))
+ }
+ // This will cause the test task to run if the coverage data is requested by the aggregation task
+ outgoing.artifact(tasks.test.map { task ->
+ task.extensions.getByType<JacocoTaskExtension>().destinationFile!!
+ })
+}