From 527ae2230f5c2dd22f496f45d5d8e3bd4acdb854 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Mon, 4 Apr 2022 16:10:32 +0200 Subject: ci: Fix JaCoCo report aggregation This change updates the build script to fix the aggregation step for the JaCoCo coverage reports that are submitted to Codecov. Previously, not all modules were properly included in the report. --- .github/workflows/build.yml | 2 +- .../src/main/kotlin/jacoco-aggregation.gradle.kts | 34 ++++++++++------------ opendc-web/opendc-web-api/build.gradle.kts | 3 +- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 83b6911a..bc30d584 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,7 +55,7 @@ jobs: uses: codecov/codecov-action@v2 with: token: ${{ secrets.CODECOV_TOKEN }} - files: ./build/reports/jacoco/report.xml + files: ./build/reports/jacoco/codeCoverageReport/codeCoverageReport.xml build-ui: name: Build UI (Node ${{ matrix.node }}) runs-on: ${{ matrix.os }} diff --git a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts index 5afd3e0d..7ae42cd2 100644 --- a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts @@ -22,7 +22,8 @@ plugins { - jacoco + base + id("jacoco-report-aggregation") } repositories { @@ -30,25 +31,20 @@ repositories { mavenCentral() } -tasks.register("codeCoverageReport") { - group = "Coverage reports" - description = "Generates an aggregate report based on all subprojects" - - reports { - xml.required.set(true) - xml.outputLocation.set(file("${buildDir}/reports/jacoco/report.xml")) - - html.required.set(true) - } - +dependencies { subprojects { - this@subprojects.plugins.withType().configureEach { - this@subprojects.tasks.matching { - it.extensions.findByType() != null } - .configureEach { - sourceSets(this@subprojects.the().named("main").get()) - executionData(this) - } + plugins.withType().configureEach { + jacocoAggregation(this@subprojects) } + } } + +@Suppress("UnstableApiUsage") +val codeCoverageReport by reporting.reports.creating(JacocoCoverageReport::class) { + testType.set(TestSuiteType.UNIT_TEST) +} + +tasks.check { + dependsOn(codeCoverageReport.reportTask) +} diff --git a/opendc-web/opendc-web-api/build.gradle.kts b/opendc-web/opendc-web-api/build.gradle.kts index 488ce8af..853632a7 100644 --- a/opendc-web/opendc-web-api/build.gradle.kts +++ b/opendc-web/opendc-web-api/build.gradle.kts @@ -53,6 +53,7 @@ dependencies { testImplementation(libs.quarkus.junit5.core) testImplementation(libs.quarkus.junit5.mockk) + testImplementation(libs.quarkus.jacoco) testImplementation(libs.restassured.core) testImplementation(libs.restassured.kotlin) testImplementation(libs.quarkus.test.security) @@ -77,7 +78,7 @@ tasks.quarkusDev { tasks.test { extensions.configure(JacocoTaskExtension::class) { excludeClassLoaders = listOf("*QuarkusClassLoader") - destinationFile = layout.buildDirectory.file("jacoco-quarkus.exec").get().asFile + // destinationFile = layout.buildDirectory.file("jacoco-quarkus.exec").get().asFile } } -- cgit v1.2.3