diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 4074bf0b24..787fd8a916 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -60,13 +60,13 @@ jobs: path: | **/build/reports/detekt - name: 'Unit tests' - run: ./gradlew :selekt-android:testDebugUnitTest :selekt-java:test :koverMergedHtmlReport ${{ env.SCAN }} + run: ./gradlew :selekt-android:testDebugUnitTest :selekt-java:test :koverHtmlReport ${{ env.SCAN }} - uses: actions/upload-artifact@v3 if: always() with: name: 'Unit test and coverage reports' path: | - build/reports/kover/merged/html + build/reports/kover/html selekt-android/build/reports/tests/testDebugUnitTest selekt-java/build/reports/tests/test - name: 'Build Selekt' @@ -74,7 +74,7 @@ jobs: ./gradlew assembleRelease ${{ env.SCAN }} - name: 'Verify coverage' run: - ./gradlew :koverMergedVerify + ./gradlew :koverVerify - name: 'Build others' run: | ./gradlew assembleAndroidTest :AndroidCLI:assembleDebug :selekt-android-lint:assemble jmhClasses diff --git a/build.gradle.kts b/build.gradle.kts index c58733c28f..0ec017bc44 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,7 +19,7 @@ import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.extensions.DetektExtension import java.net.URL import java.time.Duration -import kotlinx.kover.api.VerificationValueType +import kotlinx.kover.gradle.plugin.dsl.AggregationType import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestLogEvent import org.jetbrains.dokka.gradle.DokkaTask @@ -60,6 +60,9 @@ nexusPublishing { } dependencies { + kover(projects.selektAndroid) + kover(projects.selektApi) + kover(projects.selektJava) ktlint("com.pinterest:ktlint:${Versions.KTLINT}") } @@ -200,41 +203,30 @@ allprojects { } } -koverMerged { - enable() - filters { - classes { - excludes.addAll(listOf( - "*.BuildConfig" - )) - } - projects { - excludes.addAll(projects.run { - listOf( - androidCLI, - androidLibBenchmark, - openSSL, - selektAndroidLint, - selektAndroidSqlcipher, - selektric, - selektSqlite3 - ).map { it.name } - } + rootProject.name) +koverReport { + defaults { + filters { + excludes { + classes("*Test*") + packages(listOf( + "*.benchamrks", + "*_generated" + )) + } } - } - verify { - rule { - name = "Minimal coverage" - bound { - minValue = 97 - valueType = VerificationValueType.COVERED_PERCENTAGE + verify { + rule("Minimal coverage") { + bound { + minValue = 97 + aggregation = AggregationType.COVERED_PERCENTAGE + } } } } } tasks.getByName("check") { - dependsOn("koverMergedVerify") + dependsOn("koverVerify") } idea.project.settings { diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 1b70f66ef6..0b2697a101 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -41,7 +41,7 @@ enum class Versions( KOTLIN("1.8.22", URL("https://github.com/JetBrains/kotlin")), KOTLIN_TEST(KOTLIN.version, URL("https://github.com/JetBrains/kotlin")), KOTLINX_COROUTINES("1.6.4", URL("https://github.com/Kotlin/kotlinx.coroutines")), - KOTLINX_KOVER("0.6.1", URL("https://github.com/Kotlin/kotlinx-kover")), + KOTLINX_KOVER("0.7.2", URL("https://github.com/Kotlin/kotlinx-kover")), KTLINT("0.45.2", URL("https://github.com/pinterest/ktlint")), KTLINT_GRADLE_PLUGIN("11.0.0", URL("https://github.com/JLLeitschuh/ktlint-gradle")), MOCKITO("5.3.0", URL("https://github.com/mockito/mockito")), diff --git a/selekt-android-sqlcipher/build.gradle.kts b/selekt-android-sqlcipher/build.gradle.kts index 89aaabdc81..fd928d4c54 100644 --- a/selekt-android-sqlcipher/build.gradle.kts +++ b/selekt-android-sqlcipher/build.gradle.kts @@ -23,7 +23,6 @@ plugins { id("com.android.library") `maven-publish` signing - id("org.jetbrains.kotlinx.kover") } repositories { diff --git a/selekt-android/build.gradle.kts b/selekt-android/build.gradle.kts index 8a62cbae61..cd6f7da051 100644 --- a/selekt-android/build.gradle.kts +++ b/selekt-android/build.gradle.kts @@ -14,8 +14,6 @@ * limitations under the License. */ -import kotlinx.kover.api.KoverTaskExtension - plugins { id("com.android.library") id("kotlin-android") @@ -76,10 +74,17 @@ dependencies { testRuntimeOnly("org.robolectric:android-all:${Versions.ROBOLECTRIC_ANDROID_ALL}") } -tasks.withType().configureEach { - if (!name.contains("debug", ignoreCase = true)) { - extensions.configure { - isDisabled.set(true) +koverReport { + defaults { + mergeWith("debug") + } + androidReports("debug") { + filters { + excludes { + classes( + "*.BuildConfig" + ) + } } } } diff --git a/selekt-java/build.gradle.kts b/selekt-java/build.gradle.kts index 5e83ef5fc7..f083a70e59 100644 --- a/selekt-java/build.gradle.kts +++ b/selekt-java/build.gradle.kts @@ -16,7 +16,6 @@ @file:Suppress("UnstableApiUsage") -import kotlinx.kover.api.KoverTaskExtension import org.jetbrains.dokka.gradle.DokkaTask import org.jetbrains.dokka.gradle.DokkaTaskPartial @@ -27,10 +26,10 @@ repositories { plugins { kotlin("jvm") kotlin("kapt") + id("org.jetbrains.kotlinx.kover") id("org.jetbrains.dokka") `maven-publish` signing - id("org.jetbrains.kotlinx.kover") id("bb-jmh") } @@ -81,9 +80,6 @@ tasks.register("integrationTest") { outputs.cacheIf { false } dependsOn("buildHostSQLite") shouldRunAfter("test") - extensions.configure { - isDisabled.set(true) - } } tasks.register("buildHostSQLite") { diff --git a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/CommonObjectPoolBenchmark.kt b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/CommonObjectPoolBenchmark.kt similarity index 93% rename from selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/CommonObjectPoolBenchmark.kt rename to selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/CommonObjectPoolBenchmark.kt index eadca8bd0b..b427684166 100644 --- a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/CommonObjectPoolBenchmark.kt +++ b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/CommonObjectPoolBenchmark.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022 Bloomberg Finance L.P. + * Copyright 2023 Bloomberg Finance L.P. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,8 +14,14 @@ * limitations under the License. */ -package com.bloomberg.selekt.pools +package com.bloomberg.selekt.pools.benchamrks +import com.bloomberg.selekt.pools.CommonObjectPool +import com.bloomberg.selekt.pools.IObjectFactory +import com.bloomberg.selekt.pools.IObjectPool +import com.bloomberg.selekt.pools.IPooledObject +import com.bloomberg.selekt.pools.PoolConfiguration +import com.bloomberg.selekt.pools.SingleObjectPool import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.delay diff --git a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/Concurrent.kt b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/Concurrent.kt similarity index 94% rename from selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/Concurrent.kt rename to selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/Concurrent.kt index abbcb380d4..4cbbdf8e14 100644 --- a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/Concurrent.kt +++ b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/Concurrent.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.bloomberg.selekt.pools +package com.bloomberg.selekt.pools.benchamrks import java.util.concurrent.Executors diff --git a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/PooledObject.kt b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/PooledObject.kt similarity index 85% rename from selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/PooledObject.kt rename to selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/PooledObject.kt index 4db2c05d94..2adf1656c6 100644 --- a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/PooledObject.kt +++ b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/PooledObject.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022 Bloomberg Finance L.P. + * Copyright 2023 Bloomberg Finance L.P. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,9 @@ * limitations under the License. */ -package com.bloomberg.selekt.pools +package com.bloomberg.selekt.pools.benchamrks + +import com.bloomberg.selekt.pools.IPooledObject class PooledObject(val key: String = Thread.currentThread().id.toString()) : IPooledObject { override val isPrimary = false diff --git a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/SingleObjectPoolBenchmark.kt b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/SingleObjectPoolBenchmark.kt similarity index 87% rename from selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/SingleObjectPoolBenchmark.kt rename to selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/SingleObjectPoolBenchmark.kt index 45c4df5e98..382b7ad9c9 100644 --- a/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/SingleObjectPoolBenchmark.kt +++ b/selekt-java/src/jmh/kotlin/com/bloomberg/selekt/pools/benchamrks/SingleObjectPoolBenchmark.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022 Bloomberg Finance L.P. + * Copyright 2023 Bloomberg Finance L.P. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,8 +14,12 @@ * limitations under the License. */ -package com.bloomberg.selekt.pools +package com.bloomberg.selekt.pools.benchamrks +import com.bloomberg.selekt.pools.IObjectFactory +import com.bloomberg.selekt.pools.IObjectPool +import com.bloomberg.selekt.pools.PoolConfiguration +import com.bloomberg.selekt.pools.SingleObjectPool import org.openjdk.jmh.annotations.Benchmark import org.openjdk.jmh.annotations.BenchmarkMode import org.openjdk.jmh.annotations.Level