From 8e47607c5150d0bfb7eb8de88d071c40254b8d74 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Wed, 13 Apr 2022 16:31:31 +0200 Subject: build: Use JaCoCo 0.8.8 This change updates the build script to use JaCoCo 0.8.8 for code coverage instrumentation. This version adds support for Java 18 classes. --- buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'buildSrc/src') diff --git a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts index 6fb9ccc3..57ad1b9d 100644 --- a/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts @@ -25,6 +25,10 @@ plugins { jacoco } +jacoco { + toolVersion = "0.8.8" +} + tasks.jacocoTestReport { reports { html.required.set(true) -- cgit v1.2.3 From 6d7f683a2c1b1823c8cf99e304a1f569eaaff76a Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 21 Apr 2022 17:12:34 +0200 Subject: build: Include Quarkus tests in aggregated JaCoCo test report This change fixes an issue where the results of the Quarkus tests where not included in the aggregated JaCoCo test report, due to it not using the official Gradle JaCoCo plugin. This change defines a new configuration that exposes the execution data generated by Quarkus to the aggregation plugin. --- buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'buildSrc/src') diff --git a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts index 7ae42cd2..94b20808 100644 --- a/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts +++ b/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts @@ -1,3 +1,5 @@ +import io.quarkus.gradle.QuarkusPlugin + /* * Copyright (c) 2021 AtLarge Research * @@ -37,6 +39,9 @@ dependencies { jacocoAggregation(this@subprojects) } + plugins.withType().configureEach { + jacocoAggregation(this@subprojects) + } } } -- cgit v1.2.3 From f5d631b474567c87bcd41f8567ba66fda2a83050 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 22 Apr 2022 09:56:35 +0200 Subject: build(web/api): Move Quarkus build configuration into buildSrc This change moves most of the Quarkus build configuration into buildSrc so it can possibly be re-used for other modules. --- .../src/main/kotlin/quarkus-conventions.gradle.kts | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts (limited to 'buildSrc/src') diff --git a/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts b/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts new file mode 100644 index 00000000..a0447362 --- /dev/null +++ b/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2022 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import org.gradle.api.artifacts.type.ArtifactTypeDefinition +import org.gradle.api.attributes.Category +import org.gradle.api.attributes.VerificationType +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.kotlin +import org.gradle.kotlin.dsl.withType + +plugins { + id("kotlin-conventions") + kotlin("plugin.allopen") + kotlin("plugin.jpa") + id("testing-conventions") + id("io.quarkus") +} + +/* Mark necessary classes as open in Kotlin */ +allOpen { + annotation("javax.ws.rs.Path") + annotation("javax.enterprise.context.ApplicationScoped") + annotation("io.quarkus.test.junit.QuarkusTest") + annotation("javax.persistence.Entity") +} + +/* Include metadata for method parameters */ +tasks.withType { + kotlinOptions.javaParameters = true +} + +/* Launch Quarkus dev mode from project root directory */ +tasks.quarkusDev { + workingDir = rootProject.projectDir.toString() +} + +/* Make sure the jacoco-report-aggregation plugin picks up the Quarkus coverage data */ +configurations.create("coverageDataElementsForQuarkus") { + isVisible = false + isCanBeResolved = false + isCanBeConsumed = true + + extendsFrom(configurations["implementation"], configurations["runtimeOnly"]) + + @Suppress("UnstableApiUsage") + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category::class.java, Category.VERIFICATION)) + attribute(VerificationType.VERIFICATION_TYPE_ATTRIBUTE, objects.named(VerificationType::class.java, VerificationType.JACOCO_RESULTS)) + } + + artifacts { + add("coverageDataElementsForQuarkus", layout.buildDirectory.file("jacoco-quarkus.exec")) { + @Suppress("UnstableApiUsage") + type = ArtifactTypeDefinition.BINARY_DATA_TYPE + builtBy(tasks.test) + } + } +} + +/* Fix for Quarkus/ktlint-gradle incompatibilities */ +tasks.named("runKtlintCheckOverMainSourceSet") { + mustRunAfter(tasks.quarkusGenerateCode) + mustRunAfter(tasks.quarkusGenerateCodeDev) +} + +tasks.named("runKtlintCheckOverTestSourceSet") { + mustRunAfter(tasks.quarkusGenerateCodeTests) +} -- cgit v1.2.3