From 7473b1ce11e0eaad68b1d84e36bb1851b94082f2 Mon Sep 17 00:00:00 2001 From: Oleg Lvovitch <126686636+oleg-lvovitch-aws@users.noreply.github.com> Date: Thu, 18 Apr 2024 13:45:54 +0100 Subject: [PATCH] Build: Streamlined dependency and plugin management (#4) * Streamlined dependency and plugin management - moved code coverage to the common-convertions so it would cover all java libraries - moved library dependnecy management to libs.toml * Configuted code coverage * Code coverage action * Removed CC --- .github/workflows/gradle.yml | 11 +---- ...ldlogic.java-common-conventions.gradle.kts | 45 +++++++++++++++---- gradle/libs.versions.toml | 13 ++++++ input-stream/build.gradle.kts | 23 ++-------- object-client/build.gradle.kts | 8 ++++ 5 files changed, 62 insertions(+), 38 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index a2dcafbe..f6db72a1 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -38,13 +38,4 @@ jobs: - name: Build with Gradle Wrapper run: ./gradlew build - # NOTE: The Gradle Wrapper is the default and recommended way to run Gradle (https://docs.gradle.org/current/userguide/gradle_wrapper.html). - # If your project does not have the Gradle Wrapper configured, you can use the following configuration to run Gradle with a specified version. - # - # - name: Setup Gradle - # uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 - # with: - # gradle-version: '8.5' - # - # - name: Build with Gradle 8.5 - # run: gradle build + diff --git a/buildSrc/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts b/buildSrc/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts index b28185c7..22853167 100644 --- a/buildSrc/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts @@ -2,9 +2,21 @@ * This file was generated by the Gradle 'init' task. */ +val codeCoverageToolVersion = "0.8.11" +val codeCoverageReports = "reports/codeCoverage" +val codeCoverageThreshold = "0.95".toBigDecimal() + plugins { // Apply the java Plugin to add support for Java. java + + // Code coverage + jacoco +} + +jacoco { + toolVersion = codeCoverageToolVersion + reportsDirectory = layout.buildDirectory.dir(codeCoverageReports) } repositories { @@ -12,15 +24,6 @@ repositories { mavenCentral() } -dependencies { - // Use JUnit Jupiter for testing. - testImplementation("org.junit.jupiter:junit-jupiter:5.10.1") - testImplementation("org.mockito:mockito-core:4.11.0") - testImplementation("org.mockito:mockito-junit-jupiter:4.11.0") - - testRuntimeOnly("org.junit.platform:junit-platform-launcher") -} - // Apply a specific Java toolchain to ease working on different environments. java { toolchain { @@ -32,3 +35,27 @@ tasks.named("test") { // Use JUnit Platform for unit tests. useJUnitPlatform() } + +tasks.test { + // Report is generated and verification is run after tests + finalizedBy(tasks.jacocoTestReport, tasks.jacocoTestCoverageVerification) +} + +tasks.jacocoTestCoverageVerification { + violationRules { + rule { + limit { + minimum = codeCoverageThreshold + } + } + } +} + +tasks.jacocoTestReport { + reports { + xml.required = true + csv.required = false + } + + dependsOn(tasks.test) // tests are required to run before generating the report +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e69de29b..d87dc358 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -0,0 +1,13 @@ +[versions] +junit = "5.10.1" +mockito = "4.11.0" + +[libraries] +junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" } +junit-jupiter-launcher = { module = "org.junit.platform:junit-platform-launcher" } +mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" } +mockito-junit-jupiter = { module = "org.mockito:mockito-junit-jupiter", version.ref = "mockito" } + + + + diff --git a/input-stream/build.gradle.kts b/input-stream/build.gradle.kts index 7a50ea85..819a3ded 100644 --- a/input-stream/build.gradle.kts +++ b/input-stream/build.gradle.kts @@ -4,29 +4,14 @@ plugins { id("buildlogic.java-library-conventions") - id("jacoco") } dependencies { api(project(":object-client")) -} - -tasks.test { - // Report is generated and verification is run after tests - finalizedBy(tasks.jacocoTestReport, tasks.jacocoTestCoverageVerification) -} - -tasks.jacocoTestCoverageVerification { - violationRules { - rule { - limit { - minimum = "0.95".toBigDecimal() - } - } - } -} -tasks.jacocoTestReport { - dependsOn(tasks.test) // tests are required to run before generating the report + testImplementation(libs.junit.jupiter) + testImplementation(libs.mockito.core) + testImplementation(libs.mockito.junit.jupiter) + testRuntimeOnly(libs.junit.jupiter.launcher) } diff --git a/object-client/build.gradle.kts b/object-client/build.gradle.kts index f9341546..b2da344b 100644 --- a/object-client/build.gradle.kts +++ b/object-client/build.gradle.kts @@ -5,3 +5,11 @@ plugins { id("buildlogic.java-library-conventions") } + +dependencies { + + testImplementation(libs.junit.jupiter) + testImplementation(libs.mockito.core) + testImplementation(libs.mockito.junit.jupiter) + testRuntimeOnly(libs.junit.jupiter.launcher) +}