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
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] 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
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [ ] 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
<!-- Add any other context, implementation notes, or design decisions
-->
This commit is contained in:
Konstantin Pavlov 2025-09-11 13:43:12 +03:00 • committed by GitHub
commit 6b5f7a7345
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 34 additions and 4 deletions

View file

@ -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'

View file

@ -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)
}
}
}
}
}

View file

@ -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" }