@@ -4,6 +4,7 @@ plugins {
44 id ' org.jetbrains.kotlin.plugin.serialization'
55 id ' com.google.devtools.ksp'
66 id ' org.jetbrains.kotlin.plugin.compose'
7+ id ' jacoco'
78}
89
910kotlin {
@@ -36,6 +37,9 @@ android {
3637 shrinkResources = true
3738 proguardFiles getDefaultProguardFile(' proguard-android-optimize.txt' ), ' proguard-rules.pro'
3839 }
40+ debug {
41+ enableUnitTestCoverage true
42+ }
3943 }
4044 flavorDimensions + = " version"
4145 productFlavors {
@@ -101,3 +105,23 @@ dependencies {
101105 implementation ' ru.gildor.coroutines:kotlin-coroutines-okhttp:1.0'
102106 implementation ' io.github.rburgst:okhttp-digest:3.1.1'
103107}
108+
109+ tasks. register(' jacocoTestReport' , JacocoReport ) {
110+ dependsOn ' testFreeVersionDebugUnitTest'
111+
112+ reports {
113+ xml. required = true
114+ html. required = true
115+ }
116+
117+ def fileFilter = [' **/R.class' , ' **/R$*.class' , ' **/BuildConfig.*' , ' **/Manifest*.*' , ' **/*Test*.*' , ' android/**/*.*' ]
118+ def debugTree = fileTree(dir : " ${ project.layout.buildDirectory.get().asFile} /intermediates/javac/freeVersionDebug/classes" , excludes : fileFilter)
119+ def kotlinDebugTree = fileTree(dir : " ${ project.layout.buildDirectory.get().asFile} /tmp/kotlin-classes/freeVersionDebug" , excludes : fileFilter)
120+ def mainSrc = " ${ project.projectDir} /src/main/java"
121+
122+ sourceDirectories. setFrom(files([mainSrc]))
123+ classDirectories. setFrom(files([debugTree, kotlinDebugTree]))
124+ executionData. setFrom(fileTree(dir : project. layout. buildDirectory. get(). asFile, includes : [
125+ " jacoco/testFreeVersionDebugUnitTest.exec"
126+ ]))
127+ }
0 commit comments