Coverage reporting improvements
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 8m48s
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 8m48s
- add coverage to sonar - coverage in domain and commonUI
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
|
import com.android.build.gradle.internal.coverage.JacocoReportTask
|
||||||
|
import com.android.build.gradle.internal.lint.AndroidLintTask
|
||||||
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
|
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
|
||||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
|
||||||
|
import org.sonarqube.gradle.SonarTask
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
// this is necessary to avoid the plugins to be loaded multiple times
|
|
||||||
// in each subproject's classloader
|
|
||||||
alias(libs.plugins.versions)
|
alias(libs.plugins.versions)
|
||||||
alias(libs.plugins.sonarqube)
|
alias(libs.plugins.sonarqube)
|
||||||
alias(libs.plugins.android.application) apply false
|
alias(libs.plugins.android.application) apply false
|
||||||
@@ -20,9 +21,31 @@ sonar {
|
|||||||
properties {
|
properties {
|
||||||
property("sonar.projectKey", "YAEP")
|
property("sonar.projectKey", "YAEP")
|
||||||
property("sonar.projectName", "YAEP")
|
property("sonar.projectName", "YAEP")
|
||||||
|
|
||||||
|
val reports = subprojects
|
||||||
|
.flatMap { p ->
|
||||||
|
p.tasks.withType<JacocoReportTask>()
|
||||||
|
}
|
||||||
|
.map { t ->
|
||||||
|
"${t.outputReportDir.asFile.get()}/report.xml"
|
||||||
|
}
|
||||||
|
|
||||||
|
property(
|
||||||
|
"sonar.coverage.jacoco.xmlReportPaths",
|
||||||
|
reports
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.withType<SonarTask>().configureEach {
|
||||||
|
dependsOn(
|
||||||
|
subprojects.flatMap { it.tasks.withType<AndroidLintTask>() }
|
||||||
|
)
|
||||||
|
dependsOn(
|
||||||
|
subprojects.flatMap { it.tasks.withType<JacocoReportTask>() }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
tasks.withType<KotlinJvmCompile>().configureEach {
|
tasks.withType<KotlinJvmCompile>().configureEach {
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
jvmTarget.set(JvmTarget.fromTarget(libs.versions.jdk.get()))
|
jvmTarget.set(JvmTarget.fromTarget(libs.versions.jdk.get()))
|
||||||
@@ -41,3 +64,11 @@ fun isNonStable(version: String): Boolean {
|
|||||||
|| version.contains("beta", ignoreCase = true)
|
|| version.contains("beta", ignoreCase = true)
|
||||||
|| version.contains("RC", ignoreCase = true)
|
|| version.contains("RC", ignoreCase = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
subprojects {
|
||||||
|
tasks.withType<Test> {
|
||||||
|
testLogging {
|
||||||
|
events("passed", "skipped", "failed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
plugins {
|
plugins {
|
||||||
|
jacoco
|
||||||
alias(libs.plugins.kotlin.multiplatform)
|
alias(libs.plugins.kotlin.multiplatform)
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.android.library)
|
||||||
alias(libs.plugins.compose)
|
alias(libs.plugins.compose)
|
||||||
@@ -11,13 +12,6 @@ kotlin {
|
|||||||
jvm()
|
jvm()
|
||||||
androidTarget()
|
androidTarget()
|
||||||
|
|
||||||
// @OptIn(ExperimentalWasmDsl::class)
|
|
||||||
// wasmJs {
|
|
||||||
// moduleName = "yaep-commonUI"
|
|
||||||
// browser()
|
|
||||||
// binaries.executable()
|
|
||||||
// }
|
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
commonMain {
|
commonMain {
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -61,6 +55,19 @@ android {
|
|||||||
buildFeatures {
|
buildFeatures {
|
||||||
compose = true
|
compose = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
getByName("test") {
|
||||||
|
resources.srcDirs("src/commonTest/resources")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
debug {
|
||||||
|
enableAndroidTestCoverage = true
|
||||||
|
enableUnitTestCoverage = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
compose.resources {
|
compose.resources {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
plugins {
|
plugins {
|
||||||
jacoco
|
jacoco
|
||||||
`jvm-test-suite`
|
|
||||||
alias(libs.plugins.kotlin.multiplatform)
|
alias(libs.plugins.kotlin.multiplatform)
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.android.library)
|
||||||
}
|
}
|
||||||
@@ -24,36 +23,6 @@ kotlin {
|
|||||||
implementation(libs.atrium)
|
implementation(libs.atrium)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jvmTest {
|
|
||||||
tasks.register(name = "jacocoTestReport", type = JacocoReport::class) {
|
|
||||||
group = "verification"
|
|
||||||
description = "Generate Jacoco coverage report"
|
|
||||||
|
|
||||||
dependsOn(tasks.withType(Test::class))
|
|
||||||
|
|
||||||
val coverageSourceDirs = arrayOf(
|
|
||||||
"src/commonMain"
|
|
||||||
)
|
|
||||||
|
|
||||||
val buildDirectory = layout.buildDirectory
|
|
||||||
|
|
||||||
val classFiles = buildDirectory.dir("classes/kotlin/jvm").get().asFile
|
|
||||||
.walkBottomUp()
|
|
||||||
.toSet()
|
|
||||||
|
|
||||||
classDirectories.setFrom(classFiles)
|
|
||||||
sourceDirectories.setFrom(files(coverageSourceDirs))
|
|
||||||
|
|
||||||
buildDirectory.files("jacoco/jvmTest.exec").let {
|
|
||||||
executionData.setFrom(it)
|
|
||||||
}
|
|
||||||
|
|
||||||
reports {
|
|
||||||
xml.required = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user