| /* |
| * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. |
| */ |
| plugins { |
| id("org.jetbrains.kotlinx.kover") |
| } |
| |
| kover { |
| if (hasProperty("kover.enabled") && property("kover.enabled") != "true") { |
| disable() |
| } |
| |
| currentProject { |
| projectsForCoverageVerification.forEach { (variantName, _) -> |
| // copy the `main` variant for each module to check the coverage only in its section |
| copyVariant(variantName, "main") |
| } |
| } |
| |
| merge { |
| // collect common coverage for all projects (except excluded) in `main` variant |
| subprojects { subproject -> |
| subproject.path !in uncoveredProjects |
| } |
| createVariant("main") { add("jvm", optional = true) } |
| } |
| |
| reports { |
| total.verify.rule("Total coverage") { |
| minBound(90) |
| } |
| |
| projectsForCoverageVerification.forEach { (variantName, projectPath) -> |
| variant(variantName) { |
| filters.includes.projects.add(projectPath) |
| |
| // verify the coverage individually for each module by `check` task |
| verify { |
| onCheck = true |
| rule("Coverage for $projectPath") { |
| minBound(85) |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| |
| val uncoveredProjects get() = setOf(":kotlinx-serialization-bom", ":benchmark", ":guide") |
| // map: variant name -> project path |
| val projectsForCoverageVerification get() = mapOf("core" to ":kotlinx-serialization-core", "json" to ":kotlinx-serialization-json", "jsonOkio" to ":kotlinx-serialization-json-okio", "cbor" to ":kotlinx-serialization-cbor", "hocon" to ":kotlinx-serialization-hocon", "properties" to ":kotlinx-serialization-properties", "protobuf" to ":kotlinx-serialization-protobuf", "io" to ":kotlinx-serialization-json-io") |