From 6b5f7a73450bda2d6c51e8cc31a5ac8a6c91808d Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov <1517853+kpavlov@users.noreply.github.com> Date: Thu, 11 Sep 2025 13:43:12 +0300 Subject: [PATCH] Add Kover check (#250) ## Motivation and Context Make sure, that code is properly tested ## How Has This Been Tested? Run `./gradlew clean ktlintCheck build koverVerify koverLog koverHtmlReport` on CI ## Changes - Integrate Kover plugin for code coverage analysis - Publish Html report - Run `./gradlew clean ktlintCheck build koverVerify koverLog koverHtmlReport` on CI ## Types of changes - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update - [x] Build tooling update ## Checklist - [ ] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [ ] My code follows the repository's style guidelines - [x] New and existing tests pass locally - [ ] I have added appropriate error handling - [ ] I have added or updated documentation as needed ## Additional context --- .github/workflows/build.yml | 10 ++++++---- build.gradle.kts | 26 ++++++++++++++++++++++++++ gradle/libs.versions.toml | 2 ++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc4123e..b0b3f2d 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 @@ -32,14 +32,16 @@ jobs: cache-read-only: true - name: Build with Gradle - run: ./gradlew clean build + run: ./gradlew clean ktlintCheck build koverLog koverHtmlReport - - 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 1b697d4..79aacd1 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(65) + } + } + } + } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 320bce0..5b4a03c 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" }