From e749aaa06560f02915161fda4ebadf6d1cad9b96 Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov <1517853+kpavlov@users.noreply.github.com> Date: Thu, 11 Sep 2025 08:53:38 +0300 Subject: [PATCH 1/2] Add Kover(age) check - Integrate Kover plugin for code coverage analysis - Run Kover tasks on CI - Publish Html report - Update actions/checkout@v5 --- .github/workflows/build.yml | 8 +++++--- build.gradle.kts | 26 ++++++++++++++++++++++++++ gradle/libs.versions.toml | 2 ++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc4123e1..646e3fd0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: runs-on: macos-latest name: Validate PR steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 @@ -34,12 +34,14 @@ jobs: - name: Build with Gradle run: ./gradlew clean build - - name: Upload JUnit test results + - name: Upload Reports if: always() uses: actions/upload-artifact@v4 with: name: junit-results - path: '**/build/test-results/test/*.xml' + path: | + **/build/test-results/test/*.xml + build/reports - name: Disable Auto-Merge on Fail if: failure() && github.event_name == 'pull_request' diff --git a/build.gradle.kts b/build.gradle.kts index 1b697d4f..5f59bc67 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.ktlint) + alias(libs.plugins.kover) } allprojects { @@ -7,6 +8,31 @@ allprojects { version = "0.6.0" } +dependencies { + kover(project(":kotlin-sdk-core")) + kover(project(":kotlin-sdk-client")) + kover(project(":kotlin-sdk-server")) + kover(project(":kotlin-sdk-test")) +} + subprojects { apply(plugin = "org.jlleitschuh.gradle.ktlint") + apply(plugin = "org.jetbrains.kotlinx.kover") +} + +kover { + reports { + filters { + includes.classes("io.modelcontextprotocol.kotlin.sdk.*") + } + total { + log { + } + verify { + rule { + minBound(60) + } + } + } + } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 320bce0d..5b4a03c9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,6 +4,7 @@ kotlin = "2.2.0" dokka = "2.0.0" atomicfu = "0.29.0" ktlint = "13.0.0" +kover = "0.9.1" # libraries version serialization = "1.9.0" @@ -59,6 +60,7 @@ ktor-serialization-kotlinx-json = { group = "io.ktor", name = "ktor-serializatio [plugins] kotlinx-binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binaryCompatibilityValidatorPlugin" } ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } +kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } # Samples kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } From 113cc4e3a2d7233f5e641762cbe8ecb69a7255ef Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov <1517853+kpavlov@users.noreply.github.com> Date: Thu, 11 Sep 2025 13:14:31 +0300 Subject: [PATCH 2/2] Update CI workflow and increase Kover coverage threshold - Add `ktlintCheck`, `koverLog`, and `koverHtmlReport` to Gradle build step in CI. - Increase minimum coverage threshold from 60% to 65%. --- .github/workflows/build.yml | 2 +- build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 646e3fd0..b0b3f2d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,7 +32,7 @@ jobs: cache-read-only: true - name: Build with Gradle - run: ./gradlew clean build + run: ./gradlew clean ktlintCheck build koverLog koverHtmlReport - name: Upload Reports if: always() diff --git a/build.gradle.kts b/build.gradle.kts index 5f59bc67..79aacd17 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,7 +30,7 @@ kover { } verify { rule { - minBound(60) + minBound(65) } } }