From d7e163111aad51229c293e7a006ab6a92bf9f386 Mon Sep 17 00:00:00 2001 From: davotoula Date: Sun, 12 Jul 2026 16:52:29 +0100 Subject: [PATCH] build: remove Kover coverage plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts the Kover coverage aggregation (introduced in dca345212b) from every module, the root aggregation block, the Sonar coverage import, the version catalog, and BUILDING.md. With the plugin present the 16 GB CI runner OOM-killed during the Android test+build job even with Kover opt-in disabled; removing it entirely clears the OOM. No other CI changes — the diff versus main is exactly the inverse of dca345212b. Co-Authored-By: Claude Opus 4.8 (1M context) --- BUILDING.md | 19 ------------- amethyst/build.gradle.kts | 1 - build.gradle.kts | 53 ------------------------------------ cli/build.gradle.kts | 1 - commons/build.gradle.kts | 1 - desktopApp/build.gradle.kts | 1 - geode/build.gradle.kts | 1 - gradle/libs.versions.toml | 2 -- nestsClient/build.gradle.kts | 1 - quartz/build.gradle.kts | 1 - quic/build.gradle.kts | 1 - relayBench/build.gradle.kts | 1 - 12 files changed, 83 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index 06dec12b15..54b6021e97 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -278,25 +278,6 @@ call does not guarantee lint finishes first): The reports persist under each module's `build/reports/`, so re-run lint only when you want fresh lint data in the next scan. -### 5. Optional: include test coverage - -Coverage comes from [Kover](https://github.com/Kotlin/kotlinx-kover). The root -`koverXmlReportCoverage` task runs the unit-test suites of the covered modules -(`quartz`, `commons`, `quic`, `nestsClient`, `geode`, `cli`, `relayBench`, -`desktopApp`, and `amethyst`'s `fdroidDebug` variant) and merges the result -into `build/reports/kover/reportCoverage.xml`, which the scanner imports -automatically when it exists. Same recipe as lint — generate first, scan -second: - -```bash -./gradlew koverXmlReportCoverage -./gradlew sonar -``` - -For a human-readable version of the same data, run -`./gradlew koverHtmlReportCoverage` and open -`build/reports/kover/htmlCoverage/index.html`. - Every `sonar.*` entry in `local.properties` is forwarded to the scanner, so any [analysis parameter](https://docs.sonarsource.com/sonarqube-server/latest/analyzing-source-code/analysis-parameters/) can be set there. `sonar.projectKey` / `sonar.projectName` default to the root diff --git a/amethyst/build.gradle.kts b/amethyst/build.gradle.kts index d7d65cc0cb..e4df9eb8bf 100644 --- a/amethyst/build.gradle.kts +++ b/amethyst/build.gradle.kts @@ -6,7 +6,6 @@ plugins { alias(libs.plugins.jetbrainsComposeCompiler) alias(libs.plugins.serialization) alias(libs.plugins.googleKsp) - alias(libs.plugins.kotlinxKover) } fun getCurrentBranch(workingDir: java.io.File): String = diff --git a/build.gradle.kts b/build.gradle.kts index 5d6326492d..6b87fbd049 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -45,50 +45,6 @@ plugins { alias(libs.plugins.androidKotlinMultiplatformLibrary) apply false alias(libs.plugins.serialization) alias(libs.plugins.googleKsp) apply false - alias(libs.plugins.kotlinxKover) -} - -// Aggregated code coverage: `./gradlew koverXmlReportCoverage` runs the unit -// test suites of the modules below and merges their coverage into -// build/reports/kover/reportCoverage.xml (JaCoCo-compatible XML, importable by -// SonarQube — see BUILDING.md). `koverHtmlReportCoverage` renders the same -// data for humans. A named variant is used instead of Kover's default total -// report because the total for an Android project unconditionally merges -// EVERY build variant — compiling all release/benchmark variants of -// :amethyst just to measure unit tests. The "coverage" variant below picks -// one representative compilation per project: the `jvm` target for KMP/JVM -// modules and `playDebug` for :amethyst — play is the primary flavor and the -// larger code surface (both `add`s are optional so the one block fits every -// project). :nappletHost stays out — it has no tests. -dependencies { - kover(project(":amethyst")) - kover(project(":quartz")) - kover(project(":commons")) - kover(project(":quic")) - kover(project(":nestsClient")) - kover(project(":geode")) - kover(project(":cli")) - kover(project(":relayBench")) - kover(project(":desktopApp")) -} - -kover { - currentProject { - createVariant("coverage") {} - } -} - -subprojects { - plugins.withId("org.jetbrains.kotlinx.kover") { - configure { - currentProject { - createVariant("coverage") { - add("jvm", optional = true) - add("playDebug", optional = true) - } - } - } - } } // Shared app version for all subprojects — read from gradle/libs.versions.toml. @@ -164,15 +120,6 @@ if (sonarEnabled) { .filter { it.startsWith("sonar.") } .forEach { System.setProperty(it, sonarProperties.getProperty(it)) } - // Import Kover's aggregated coverage (run `./gradlew koverXmlReportCoverage` - // first) unless the operator pointed the scanner somewhere else. - if (System.getProperty("sonar.coverage.jacoco.xmlReportPaths") == null) { - System.setProperty( - "sonar.coverage.jacoco.xmlReportPaths", - layout.buildDirectory.file("reports/kover/reportCoverage.xml").get().asFile.absolutePath, - ) - } - // The scanner's sonarResolver task reads AGP's generated-res-values provider // but doesn't depend on the task that produces it — wire it up in every // module that has both (today only :amethyst enables resValues, but the diff --git a/cli/build.gradle.kts b/cli/build.gradle.kts index 7d26b235b1..489e604740 100644 --- a/cli/build.gradle.kts +++ b/cli/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.jetbrainsKotlinJvm) application - alias(libs.plugins.kotlinxKover) } kotlin { diff --git a/commons/build.gradle.kts b/commons/build.gradle.kts index b71358533c..8182a3604b 100644 --- a/commons/build.gradle.kts +++ b/commons/build.gradle.kts @@ -25,7 +25,6 @@ plugins { alias(libs.plugins.jetbrainsComposeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.serialization) - alias(libs.plugins.kotlinxKover) } kotlin { diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts index f49cad7ba2..10ca2b3d48 100644 --- a/desktopApp/build.gradle.kts +++ b/desktopApp/build.gradle.kts @@ -6,7 +6,6 @@ plugins { alias(libs.plugins.jetbrainsKotlinJvm) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.jetbrainsComposeCompiler) - alias(libs.plugins.kotlinxKover) } // RPM rejects dashes in version strings — replace with tilde (~) which RPM uses diff --git a/geode/build.gradle.kts b/geode/build.gradle.kts index 46e9f1cf23..ee636965c7 100644 --- a/geode/build.gradle.kts +++ b/geode/build.gradle.kts @@ -5,7 +5,6 @@ plugins { alias(libs.plugins.serialization) application `java-test-fixtures` - alias(libs.plugins.kotlinxKover) } application { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cc1cf2bad1..3d768731a6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -35,7 +35,6 @@ kmpTorResource = "409.5.0" junit = "4.13.2" kchesslib = "1.0.5" kotlin = "2.4.0" -kover = "0.9.8" kotlinxCollectionsImmutable = "0.5.0" kotlinxCoroutinesCore = "1.11.0" kotlinxSerialization = "1.11.0" @@ -247,7 +246,6 @@ jetbrainsKotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } jetbrainsComposeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } serialization = { id = 'org.jetbrains.kotlin.plugin.serialization', version.ref = 'kotlin' } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } -kotlinxKover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } androidKotlinMultiplatformLibrary = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" } vanniktech-mavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish" } composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" } diff --git a/nestsClient/build.gradle.kts b/nestsClient/build.gradle.kts index bb5acd43a2..3cb05ae465 100644 --- a/nestsClient/build.gradle.kts +++ b/nestsClient/build.gradle.kts @@ -5,7 +5,6 @@ plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.androidKotlinMultiplatformLibrary) alias(libs.plugins.serialization) - alias(libs.plugins.kotlinxKover) } kotlin { diff --git a/quartz/build.gradle.kts b/quartz/build.gradle.kts index 108587341f..10c0817ee8 100644 --- a/quartz/build.gradle.kts +++ b/quartz/build.gradle.kts @@ -9,7 +9,6 @@ plugins { alias(libs.plugins.androidKotlinMultiplatformLibrary) alias(libs.plugins.serialization) alias(libs.plugins.vanniktech.mavenPublish) - alias(libs.plugins.kotlinxKover) } kotlin { diff --git a/quic/build.gradle.kts b/quic/build.gradle.kts index 55c28f88d1..def6dad697 100644 --- a/quic/build.gradle.kts +++ b/quic/build.gradle.kts @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.androidKotlinMultiplatformLibrary) - alias(libs.plugins.kotlinxKover) } kotlin { diff --git a/relayBench/build.gradle.kts b/relayBench/build.gradle.kts index 831f524883..8a02cc1e96 100644 --- a/relayBench/build.gradle.kts +++ b/relayBench/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.jetbrainsKotlinJvm) application - alias(libs.plugins.kotlinxKover) } application {