diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc4123e1..b0b3f2d8 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 1b697d4f..79aacd17 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 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" }