Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Codecov reports for Android modules #2868

Merged
merged 65 commits into from
Aug 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
996a101
Add coverage report for unit test on sentry-android-core
buenaflor Jul 27, 2023
6dc5f64
Try running coverage report for android (FOR TESTING PURPOSES ONLY)
buenaflor Jul 27, 2023
e0d376f
Format code
getsentry-bot Jul 27, 2023
9a37ec1
Retrigger checks
buenaflor Jul 27, 2023
aff3eb7
Try clean firsT
buenaflor Jul 27, 2023
5d6c0b1
Use makefile
buenaflor Jul 27, 2023
faa9304
Try running testDebugUnitTest first
buenaflor Jul 27, 2023
cb13576
Run test only
buenaflor Jul 27, 2023
c94c6cf
list tasks
buenaflor Jul 27, 2023
324d498
disable cache
buenaflor Jul 27, 2023
17904a5
Try with release unit test
buenaflor Jul 27, 2023
9f441c2
Try with release build
buenaflor Jul 27, 2023
e8d057c
Specify files to upload for codecov
buenaflor Jul 27, 2023
d52e581
fix typo
buenaflor Jul 27, 2023
2e9327d
Add archiving
buenaflor Jul 27, 2023
ec2394e
Without upload
buenaflor Jul 28, 2023
05e87e3
Try matching all android build dirs during codecov upload
buenaflor Jul 28, 2023
9c6d2cc
Enable unit test coverage for android modules
buenaflor Jul 28, 2023
8d38e1d
Create task
buenaflor Jul 28, 2023
15ddbbf
Exclude sentry-android-integration-tests
buenaflor Jul 28, 2023
e7a98f0
Format code
getsentry-bot Jul 28, 2023
81c436f
Try whole process
buenaflor Jul 28, 2023
af246d2
Try without specifying files
buenaflor Jul 28, 2023
8a04e61
No archive
buenaflor Jul 28, 2023
630b1de
Rename reports file
buenaflor Jul 28, 2023
2478e13
Add coverage task in makefile
buenaflor Jul 28, 2023
57d58c0
Reset workflow file
buenaflor Jul 28, 2023
fa67c55
Remove coverage for debug
buenaflor Jul 28, 2023
aa3938d
Test
buenaflor Aug 4, 2023
afb4c3f
Test
buenaflor Aug 4, 2023
d8a1260
Fix build error
buenaflor Aug 4, 2023
8c30a3c
Test without archiving
buenaflor Aug 4, 2023
e9be32f
Test with array of android module strings
buenaflor Aug 4, 2023
9554eb2
Try with different classes folders
buenaflor Aug 4, 2023
987b3a7
Fix classes dir name
buenaflor Aug 4, 2023
205d46d
Format code
getsentry-bot Aug 4, 2023
2272cdb
Include sentry-compose
buenaflor Aug 4, 2023
e0999ed
Adjust sentry-compose source dir
buenaflor Aug 4, 2023
3360746
Fix subproject name reference
buenaflor Aug 4, 2023
0c998b3
Revert some changes
buenaflor Aug 4, 2023
bb67642
Revert some changes
buenaflor Aug 4, 2023
2ed930c
Cleanup
buenaflor Aug 4, 2023
754cfef
Use gradle plugin
buenaflor Aug 7, 2023
bc16e50
Apply binary plugin
buenaflor Aug 7, 2023
b3afe83
Improve copy and reduce code duplication
buenaflor Aug 8, 2023
227ad2c
(don't merge): debugging Kover
buenaflor Aug 8, 2023
bb11867
(don't merge): debugging Kover
buenaflor Aug 8, 2023
340e6c8
(don't merge): remove archiving for now
buenaflor Aug 8, 2023
eea566a
(don't merge): specify file path for codecov
buenaflor Aug 8, 2023
48927a5
(don't merge): specify file path for codecov
buenaflor Aug 8, 2023
2f7118f
Revert build.yml
buenaflor Aug 8, 2023
a71ba30
Apply jacoco manually for sentry-compose
buenaflor Aug 8, 2023
e9f3fd1
Remove renaming of report
buenaflor Aug 8, 2023
45ae844
Fix 'this' receiver
buenaflor Aug 8, 2023
eb1b622
(don't merge): test kover
buenaflor Aug 9, 2023
67083b2
(don't merge): use release variant)
buenaflor Aug 9, 2023
a8aedd1
(don't merge): run test before kover
buenaflor Aug 9, 2023
a39ec0a
(don't merge): change report file name
buenaflor Aug 9, 2023
bfc32d9
Format code
getsentry-bot Aug 9, 2023
8c3c39e
(don't merge): try specifying the file
buenaflor Aug 9, 2023
e20f6fa
(don't merge): try renaming the kover report
buenaflor Aug 9, 2023
a8d2f23
Format code
getsentry-bot Aug 9, 2023
dc8c744
Add Kover for KMP modules
buenaflor Aug 9, 2023
b90a505
Formatting
buenaflor Aug 9, 2023
60c5497
Remove Kover configuration in sentry-compose build.gradle.kts
buenaflor Aug 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.PHONY: all clean compile javadocs dryRelease update stop checkFormat format api assembleBenchmarkTestRelease assembleUiTestRelease
.PHONY: all clean compile javadocs dryRelease update stop checkFormat format api assembleBenchmarkTestRelease assembleUiTestRelease createCoverageReports

all: stop clean javadocs compile
all: stop clean javadocs compile createCoverageReports
assembleBenchmarks: stop clean assembleBenchmarkTestRelease
assembleUiTests: stop clean assembleUiTestRelease

Expand Down Expand Up @@ -50,3 +50,10 @@ assembleBenchmarkTestRelease:
assembleUiTestRelease:
./gradlew :sentry-android-integration-tests:sentry-uitest-android:assembleRelease
./gradlew :sentry-android-integration-tests:sentry-uitest-android:assembleAndroidTest -DtestBuildType=release

# Create coverage reports
# - Jacoco for Java & Android modules
# - Kover for KMP modules e.g sentry-compose
createCoverageReports:
./gradlew jacocoTestReport
./gradlew koverXmlReportRelease
41 changes: 41 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.vanniktech.maven.publish.MavenPublishPlugin
import com.vanniktech.maven.publish.MavenPublishPluginExtension
import groovy.util.Node
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import kotlinx.kover.gradle.plugin.dsl.KoverReportExtension
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent

Expand All @@ -14,6 +15,8 @@ plugins {
id(Config.QualityPlugins.detekt) version Config.QualityPlugins.detektVersion
`maven-publish`
id(Config.QualityPlugins.binaryCompatibilityValidator) version Config.QualityPlugins.binaryCompatibilityValidatorVersion
id(Config.QualityPlugins.jacocoAndroid) version Config.QualityPlugins.jacocoAndroidVersion apply false
id(Config.QualityPlugins.kover) version Config.QualityPlugins.koverVersion apply false
}

buildscript {
Expand Down Expand Up @@ -97,6 +100,44 @@ allprojects {
}

subprojects {
val jacocoAndroidModules = listOf(
"sentry-android-core",
"sentry-android-fragment",
"sentry-android-navigation",
"sentry-android-ndk",
"sentry-android-okhttp",
"sentry-android-sqlite",
"sentry-android-timber"
)
if (jacocoAndroidModules.contains(name)) {
afterEvaluate {
jacoco {
toolVersion = "0.8.10"
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = true
excludes = listOf("jdk.internal.*")
}
}
}
}

val koverKmpModules = listOf("sentry-compose")
if (koverKmpModules.contains(name)) {
afterEvaluate {
configure<KoverReportExtension> {
androidReports("release") {
xml {
// Change the report file name so the Codecov Github action can find it
setReportFile(file("$buildDir/reports/kover/report.xml"))
}
}
}
}
}

plugins.withId(Config.QualityPlugins.detektPlugin) {
configure<DetektExtension> {
buildUponDefaultConfig = true
Expand Down
5 changes: 5 additions & 0 deletions buildSrc/src/main/java/Config.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

import java.math.BigDecimal

object Config {
Expand Down Expand Up @@ -201,6 +202,10 @@ object Config {
val binaryCompatibilityValidatorVersion = "0.13.0"
val binaryCompatibilityValidatorPlugin = "org.jetbrains.kotlinx:binary-compatibility-validator:$binaryCompatibilityValidatorVersion"
val binaryCompatibilityValidator = "org.jetbrains.kotlinx.binary-compatibility-validator"
val jacocoAndroid = "com.mxalbert.gradle.jacoco-android"
val jacocoAndroidVersion = "0.2.0"
val kover = "org.jetbrains.kotlinx.kover"
val koverVersion = "0.7.3"
}

object Sentry {
Expand Down
7 changes: 1 addition & 6 deletions sentry-android-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ plugins {
id("com.android.library")
kotlin("android")
jacoco
id(Config.QualityPlugins.jacocoAndroid)
id(Config.QualityPlugins.errorProne)
id(Config.QualityPlugins.gradleVersions)
}
Expand Down Expand Up @@ -64,12 +65,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

tasks.withType<JavaCompile>().configureEach {
options.errorprone {
check("NullAway", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)
Expand Down
7 changes: 1 addition & 6 deletions sentry-android-fragment/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
id("com.android.library")
kotlin("android")
jacoco
id(Config.QualityPlugins.jacocoAndroid)
id(Config.QualityPlugins.gradleVersions)
id(Config.QualityPlugins.detektPlugin)
}
Expand Down Expand Up @@ -54,12 +55,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

kotlin {
explicitApi()
}
Expand Down
7 changes: 1 addition & 6 deletions sentry-android-navigation/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
id("com.android.library")
kotlin("android")
jacoco
id(Config.QualityPlugins.jacocoAndroid)
id(Config.QualityPlugins.gradleVersions)
id(Config.QualityPlugins.detektPlugin)
}
Expand Down Expand Up @@ -55,12 +56,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

kotlin {
explicitApi()
}
Expand Down
7 changes: 1 addition & 6 deletions sentry-android-ndk/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
id("com.android.library")
kotlin("android")
jacoco
id(Config.QualityPlugins.jacocoAndroid)
id(Config.NativePlugins.nativeBundleExport)
id(Config.QualityPlugins.gradleVersions)
}
Expand Down Expand Up @@ -96,12 +97,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

dependencies {
api(projects.sentry)
api(projects.sentryAndroidCore)
Expand Down
7 changes: 1 addition & 6 deletions sentry-android-okhttp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ plugins {
id("com.android.library")
kotlin("android")
jacoco
id(Config.QualityPlugins.jacocoAndroid)
id(Config.QualityPlugins.gradleVersions)
id(Config.QualityPlugins.detektPlugin)
}
Expand Down Expand Up @@ -56,12 +57,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

kotlin {
explicitApi()
}
Expand Down
7 changes: 1 addition & 6 deletions sentry-android-sqlite/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ plugins {
id("com.android.library")
kotlin("android")
jacoco
id(Config.QualityPlugins.jacocoAndroid)
id(Config.QualityPlugins.gradleVersions)
id(Config.QualityPlugins.detektPlugin)
}
Expand Down Expand Up @@ -56,12 +57,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

kotlin {
explicitApi()
}
Expand Down
7 changes: 1 addition & 6 deletions sentry-android-timber/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ plugins {
id("com.android.library")
kotlin("android")
jacoco
id(Config.QualityPlugins.jacocoAndroid)
id(Config.QualityPlugins.gradleVersions)
id(Config.QualityPlugins.detektPlugin)
}
Expand Down Expand Up @@ -59,12 +60,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

kotlin {
explicitApi()
}
Expand Down
8 changes: 1 addition & 7 deletions sentry-compose/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
kotlin("multiplatform")
id("com.android.library")
id("org.jetbrains.compose")
jacoco
id(Config.QualityPlugins.kover)
id(Config.QualityPlugins.gradleVersions)
id(Config.QualityPlugins.detektPlugin)
id(Config.BuildPlugins.dokkaPluginAlias)
Expand Down Expand Up @@ -113,12 +113,6 @@ android {
}
}

tasks.withType<Test> {
configure<JacocoTaskExtension> {
isIncludeNoLocationClasses = false
}
}

tasks.withType<Detekt> {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
Expand Down