Skip to content

Commit

Permalink
Merge pull request #1439 from Adyen/feature/code-coverage
Browse files Browse the repository at this point in the history
Enable code coverage
  • Loading branch information
OscarSpruit authored Jan 17, 2024
2 parents bd90f51 + 93a0c94 commit 2d38801
Show file tree
Hide file tree
Showing 6 changed files with 204 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/sonar_cloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew build sonar
run: ./gradlew detekt assDeb teDebUnTe lintDeb jacocoTestReport sonar
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ plugins {
id 'io.gitlab.arturbosch.detekt' version "$detekt_gradle_plugin_version"
id 'org.jetbrains.dokka' version "$dokka_version"
id 'org.sonarqube' version "$sonarqube_version"
id 'jacoco'
}

apply from: "config/gradle/dokkaRoot.gradle"
Expand Down
3 changes: 2 additions & 1 deletion config/gradle/codeQuality.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
* Created by ran on 6/2/2019.
*/

apply from: "${rootDir}/config/gradle/jacoco.gradle"
apply from: "${rootDir}/config/gradle/ktlint.gradle"
apply from: "${rootDir}/config/gradle/detekt.gradle"

check.dependsOn "ktlint", "detekt"
check.dependsOn "ktlint", "detekt"
115 changes: 115 additions & 0 deletions config/gradle/jacoco.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
apply plugin: 'jacoco'

if (project.hasProperty('android')) {
android.buildTypes {
debug {
testCoverageEnabled = true
}
}
}

project.afterEvaluate {
jacoco {
toolVersion = "0.8.9"
}

tasks.withType(Test).configureEach {
jacoco {
excludes += coverageExclusions
includeNoLocationClasses = true
}
}

if (project.hasProperty('android')) {
tasks.register('jacocoTestReport', JacocoReport) {
group 'Reporting'
description 'Generate JaCoCo report for debug unit tests'
dependsOn 'testDebugUnitTest'

reports {
xml.required = true
html.required = false
csv.required = false
}

additionalSourceDirs(android.sourceSets.main.java.sourceFiles)
additionalSourceDirs(android.sourceSets.debug.java.sourceFiles)
additionalClassDirs(fileTree(dir: "${layout.buildDirectory.get().asFile}/intermediates/javac/debug", excludes: coverageExclusions))
additionalClassDirs(fileTree(dir: "${layout.buildDirectory.get().asFile}/tmp/kotlin-classes/debug", excludes: coverageExclusions))
executionData(
fileTree(dir: "${layout.buildDirectory.get().asFile}", includes: [
"outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec",
"jacoco/test.exec",
"outputs/code-coverage/connected/*coverage.ec"
]),
fileTree(dir: "$projectDir", includes: ['jacoco.exec'])
)
}
}
}

ext.coverageExclusions = [
// Android
'**/BuildConfig.*',
'**/Manifest*.*',
'**/R$*.class',
'**/R.class',

// Data binding
'**/BR$*.class',
'**/BR.class',
'**/DataBinderMapperImpl.*',
'**/DataBinderMapperImpl*.*',
'**/databinding/**',
'**/*BindingAdapter.*',
'**/*BindingAdapters.*',

// Activities, Fragments, etc. (not tested with unit tests)
'**/*Activity$*.*',
'**/*Activity.*',
'**/*Adapter.*',
'**/*Behavior.*',
'**/*Dialog.*',
'**/*Drawable.*',
'**/*Fragment$*.*',
'**/*Fragment.*',
'**/*View.*',

// Activity result contract
'**/*ActivityResults.*',
'**/*ResultContract.*',

// Dagger + Hilt
'**/*_ComponentTreeDeps.*',
'**/*_Factory.*',
'**/*_GeneratedInjector.*',
'**/*_HiltComponents.*',
'**/*_HiltComponents_*.*',
'**/*_HiltModules.*',
'**/*_HiltModules_*.*',
'**/*_Member*Injector.*',
'**/*_ProvideFactory.*',
'**/*_Provide*Factory.*',
'**/dagger/**',
'**/Dagger*.*',
'**/hilt_aggregated_deps/**',
'**/Hilt_*.*',

// Custom views not following *View naming
'**/AddressFormInput.*',
'**/AdyenSwipeToRevealLayout.*',
'**/AdyenTextInputEditText.*',
'**/CardNumberInput.*',
'**/ExpiryDateInput.*',
'**/GiftCardNumberInput.*',
'**/IbanInput.*',
'**/SecurityCodeInput.*',
'**/SocialSecurityNumberInput.*',

// Test classes
'**/*Test.*',
'**/Test*.*',

// Fix issue with JaCoCo on JDK
'jdk.internal.*'
]
3 changes: 3 additions & 0 deletions config/gradle/sonarcloud.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ sonar {
property 'sonar.projectKey', 'Adyen_adyen-android'
property 'sonar.organization', 'adyen'
property 'sonar.host.url', 'https://sonarcloud.io'
property 'sonar.gradle.skipCompile', 'true'
}
}

Expand All @@ -27,6 +28,8 @@ subprojects {
properties {
property 'sonar.androidLint.reportPaths', "${layout.buildDirectory.get().asFile}/reports/lint-results-debug.xml"
property 'sonar.kotlin.detekt.reportPaths', "${layout.buildDirectory.get().asFile}/reports/detekt/detekt-results.xml"
property 'sonar.jacoco.reportPaths', "${layout.buildDirectory.get().asFile}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml"
property 'sonar.groovy.jacoco.reportPath', "${layout.buildDirectory.get().asFile}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml"
}
}
}
82 changes: 82 additions & 0 deletions gradle/verification-metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9083,6 +9083,83 @@
<sha256 value="6d535f94efb663bdb682c9f27a50335394688009642ba7a9677504bc1be4129b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.agent" version="0.8.8">
<artifact name="org.jacoco.agent-0.8.8-runtime.jar">
<sha256 value="67de51e9ca1db044f3a3d10613518befb02e8eee1015f2ff6d56cfb9d4506546" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.agent-0.8.8.jar">
<sha256 value="072ecbd496896623899a696fff12c01c1615f737616d2792e6d0e10cdf8a610d" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.agent-0.8.8.pom">
<sha256 value="7dd13c80aff315032983357c650a887d6fdb4c8a8870b207bb4802c49809e7b4" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.agent" version="0.8.9">
<artifact name="org.jacoco.agent-0.8.9.jar">
<sha256 value="c067e29a49063220e75215eff1bc234584ad002e747afdf13a69662be5b0e07d" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.agent-0.8.9.pom">
<sha256 value="81e44bb0641819c08e37dc46d6f72453259812efc8ddf21961d505c8c2b50ecc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.ant" version="0.8.8">
<artifact name="org.jacoco.ant-0.8.8.jar">
<sha256 value="02e33bd2c48dc0be67c2fea84d43beececfd400da6797c58153253d4c30aca15" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.ant-0.8.8.pom">
<sha256 value="fafff75819609030f4626509313c0861428c2c26c8d36e9a8938334a04478909" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.ant" version="0.8.9">
<artifact name="org.jacoco.ant-0.8.9.jar">
<sha256 value="5695ecd24f04c421b12a74f4b44042857b16eed0bc049ff38dd6dc40abca7bef" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.ant-0.8.9.pom">
<sha256 value="9fa03278406b7cd5cf4d4c7a03469efec0c94cd46fe13436f6dd0c25f3b14de8" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.build" version="0.8.8">
<artifact name="org.jacoco.build-0.8.8.pom">
<sha256 value="f4ce0b1285fd24fc6c772f42857298315904dde8fd5677267a0fad5ff9ce2aef" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.build" version="0.8.9">
<artifact name="org.jacoco.build-0.8.9.pom">
<sha256 value="02678f267cdaa23ff51772ad1f033a1f3ff5741cc10d444740bd4834d47583b3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.core" version="0.8.8">
<artifact name="org.jacoco.core-0.8.8.jar">
<sha256 value="474c782f809d88924713dfdbf0acb79d330f904be576484803463d0465611643" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.core-0.8.8.pom">
<sha256 value="f5fab5a48df823b83c0ea35026032368cc9b81800efb257cc7a5928298fee225" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.core" version="0.8.9">
<artifact name="org.jacoco.core-0.8.9.jar">
<sha256 value="a33e041dd97530ea57d6dde0e2635ea51680827d2dc0de372d3ccc45b51e68c7" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.core-0.8.9.pom">
<sha256 value="5404f7052765a64374d275367fd9485bb5996b369113c89a8557d8f024810f02" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.report" version="0.8.8">
<artifact name="org.jacoco.report-0.8.8.jar">
<sha256 value="2c129110f3e3fcaa1f8179578ea3894586199cb0826be5c7790278084c9622a9" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.report-0.8.8.pom">
<sha256 value="5213af2916bb2690be871917d82a0f9c2ba1e88b796a59343fc03df8ae138716" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jacoco" name="org.jacoco.report" version="0.8.9">
<artifact name="org.jacoco.report-0.8.9.jar">
<sha256 value="0d36b87cdea59f98c8cf26367003b4735d5c3187411d4649ddfefdeed387b63e" origin="Generated by Gradle"/>
</artifact>
<artifact name="org.jacoco.report-0.8.9.pom">
<sha256 value="81e413bdde52bc70ae63f5cb14e524e5691532db7779b55d5899ee5c0b6fb871" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.javassist" name="javassist" version="3.26.0-GA">
<artifact name="javassist-3.26.0-GA.jar">
<sha256 value="ca5625874ff0a34f2422173a511b33c225218c146a3c961b18940efff430462d" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -11708,6 +11785,11 @@
<sha256 value="fa3f995021cff4f4139306e6cffeeea07539106440d29b19cc06a7a636a13850" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.ow2.asm" name="asm-bom" version="9.5">
<artifact name="asm-bom-9.5.pom">
<sha256 value="71756b35dd837db638806f00f4077e8bb35fe8d80bd674e8141a307c811635bf" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.ow2.asm" name="asm-commons" version="9.2">
<artifact name="asm-commons-9.2.jar">
<sha256 value="be4ce53138a238bb522cd781cf91f3ba5ce2f6ca93ec62d46a162a127225e0a6" origin="Generated by Gradle"/>
Expand Down

0 comments on commit 2d38801

Please sign in to comment.