diff --git a/.circleci/config.yml b/.circleci/config.yml index 810495d9..0b4c865b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -41,7 +41,6 @@ jobs: name: unit-tests command: | ./gradlew ciTest testDebugUnitTest - ./gradlew jacocoFullReport - run: name: lint command: ./gradlew :ultrasonic:lintRelease @@ -61,8 +60,6 @@ jobs: - store_artifacts: path: subsonic-api/build/reports destination: reports - - store_artifacts: - path: build/reports/jacoco/jacocoFullReport/ push_translations: docker: - image: cimg/python:3.6 diff --git a/build.gradle b/build.gradle index 925569fa..c44d7f84 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,6 @@ buildscript { classpath libs.kotlin classpath libs.ktlintGradle classpath libs.detekt - classpath libs.jacoco } } @@ -44,8 +43,6 @@ allprojects { } } -apply from: 'gradle_scripts/jacoco.gradle' - wrapper { gradleVersion(libs.versions.gradle.get()) distributionType("all") diff --git a/core/domain/build.gradle b/core/domain/build.gradle index 0b0ab96c..3ed1e681 100644 --- a/core/domain/build.gradle +++ b/core/domain/build.gradle @@ -1,12 +1,6 @@ apply from: bootstrap.androidModule apply plugin: 'kotlin-kapt' -ext { - jacocoExclude = [ - '**/domain/**' - ] -} - dependencies { implementation libs.roomRuntime implementation libs.roomKtx diff --git a/core/subsonic-api/build.gradle b/core/subsonic-api/build.gradle index 9ad09193..6db3ffcb 100644 --- a/core/subsonic-api/build.gradle +++ b/core/subsonic-api/build.gradle @@ -20,11 +20,3 @@ dependencies { testImplementation libs.mockWebServer testImplementation libs.apacheCodecs } - -ext { - // Excluding data classes - jacocoExclude = [ - '**/models/**', - '**/di/**' - ] -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 59ea094a..f5edc6ce 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,6 @@ androidxcore = "1.6.0" ktlint = "0.43.2" ktlintGradle = "10.2.0" detekt = "1.19.0" -jacoco = "0.8.7" preferences = "1.1.1" media = "1.3.1" media3 = "1.0.0-alpha03" @@ -49,7 +48,6 @@ gradle = { module = "com.android.tools.build:gradle", version.r kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } ktlintGradle = { module = "org.jlleitschuh.gradle:ktlint-gradle", version.ref = "ktlintGradle" } detekt = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } -jacoco = { module = "org.jacoco:org.jacoco.core", version.ref = "jacoco" } core = { module = "androidx.core:core-ktx", version.ref = "androidxcore" } support = { module = "androidx.legacy:legacy-support-v4", version.ref = "androidLegacySupport" } diff --git a/gradle_scripts/android-module-bootstrap.gradle b/gradle_scripts/android-module-bootstrap.gradle index 84aa4e41..70a8a479 100644 --- a/gradle_scripts/android-module-bootstrap.gradle +++ b/gradle_scripts/android-module-bootstrap.gradle @@ -3,7 +3,6 @@ */ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' -apply plugin: 'jacoco' apply from: "${project.rootDir}/gradle_scripts/code_quality.gradle" android { @@ -48,10 +47,6 @@ android { tasks.withType(Test) { useJUnitPlatform() - jacoco { - includeNoLocationClasses = true - excludes += jacocoExclude - } } dependencies { @@ -61,11 +56,4 @@ dependencies { testRuntimeOnly libs.junitVintage } -jacoco { - toolVersion(libs.versions.jacoco.get()) -} - -ext { - jacocoExclude = ['jdk.internal.*'] -} diff --git a/gradle_scripts/jacoco.gradle b/gradle_scripts/jacoco.gradle deleted file mode 100644 index c8ba2c07..00000000 --- a/gradle_scripts/jacoco.gradle +++ /dev/null @@ -1,92 +0,0 @@ -apply plugin: 'jacoco' - -jacoco { - toolVersion(libs.versions.jacoco.get()) -} - -def mergedJacocoExec = file("${project.buildDir}/jacoco/jacocoMerged.exec") - -def merge = tasks.register('jacocoMergeReports', JacocoMerge) { - group = "Reporting" - description = "Merge all jacoco reports from projects into one." - - ListProperty jacocoFiles = project.objects.listProperty(File.class) - project.subprojects { subproject -> - subproject.plugins.withId("jacoco") { - project.logger.info("${subproject.name} has Jacoco plugin applied") - subproject.tasks.withType(Test) { task -> - File destFile = task.extensions.getByType(JacocoTaskExtension.class).destinationFile - if (destFile.exists() && !task.name.contains("Release")) { - jacocoFiles.add(destFile) - } - } - } - } - - executionData(jacocoFiles) - destinationFile(mergedJacocoExec) -} - -tasks.register('jacocoFullReport', JacocoReport) { - dependsOn merge - group = "Reporting" - description = "Generate full Jacoco coverage report including all modules." - - getClassDirectories().setFrom(files()) - getSourceDirectories().setFrom(files()) - getExecutionData().setFrom(files()) - - reports { - xml.enabled = true - html.enabled = true - csv.enabled = false - } - - // Always run merging, as all input calculation is done in doFirst {} - outputs.upToDateWhen { false } - // Task will run anyway even if initial inputs are empty - onlyIf = { true } - - project.subprojects { subproject -> - subproject.plugins.withId("jacoco") { - project.logger.info("${subproject.name} has Jacoco plugin applied") - subproject.plugins.withId("kotlin-android") { - project.logger.info("${subproject.name} is android project") - def mainSources = subproject.extensions.findByName("android").sourceSets['main'] - project.logger.info("Android sources: ${mainSources.java.srcDirs}") - mainSources.java.srcDirs.forEach { - additionalSourceDirs(it) - } - project.logger.info("Subproject exclude: ${subproject.jacocoExclude}") - additionalClassDirs(fileTree( - dir: "${subproject.buildDir}/tmp/kotlin-classes/debug", - excludes: subproject.jacocoExclude - )) - } - subproject.plugins.withId("kotlin") { plugin -> - project.logger.info("${subproject.name} is common kotlin project") - SourceDirectorySet mainSources = subproject.extensions.getByName("kotlin") - .sourceSets[SourceSet.MAIN_SOURCE_SET_NAME] - .kotlin - mainSources.srcDirs.forEach { - project.logger.debug("Adding sources: $it") - additionalSourceDirs(it) - } - project.logger.info("Subproject exclude: ${subproject.jacocoExclude}") - additionalClassDirs(fileTree( - dir: "${subproject.buildDir}/classes/kotlin/main", - excludes: subproject.jacocoExclude - )) - } - - subproject.tasks.withType(Test) { task -> - File destFile = task.extensions.getByType(JacocoTaskExtension.class).destinationFile - if (destFile.exists() && !task.name.contains("Release")) { - project.logger.info("Adding execution data: $destFile") - executionData(destFile) - } - } - } - } - -} diff --git a/gradle_scripts/kotlin-module-bootstrap.gradle b/gradle_scripts/kotlin-module-bootstrap.gradle index 4a17c80f..d440dec5 100644 --- a/gradle_scripts/kotlin-module-bootstrap.gradle +++ b/gradle_scripts/kotlin-module-bootstrap.gradle @@ -3,7 +3,6 @@ */ apply plugin: 'kotlin' apply plugin: 'kotlin-kapt' -apply plugin: 'jacoco' apply from: "${project.rootDir}/gradle_scripts/code_quality.gradle" sourceSets { @@ -21,36 +20,8 @@ dependencies { testRuntimeOnly libs.junitVintage } -jacoco { - toolVersion(libs.versions.jacoco.get()) -} - -ext { - // override it in the module - jacocoExclude = ['jdk.internal.*'] -} - -jacocoTestReport { - reports { - html.required = true - xml.required = false - csv.required = false - } - - afterEvaluate { - getClassDirectories().setFrom(files(classDirectories.files.collect { - fileTree(dir: it, excludes: jacocoExclude) - })) - } -} - tasks.named("test").configure { useJUnitPlatform() - jacoco { - excludes += jacocoExclude - includeNoLocationClasses = true - } - finalizedBy jacocoTestReport } tasks.register("ciTest") { diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index 95196a9c..986ebf0e 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -1,7 +1,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' -apply plugin: 'jacoco' apply from: "../gradle_scripts/code_quality.gradle" android { @@ -135,36 +134,3 @@ dependencies { implementation libs.timber } - -jacoco { - toolVersion(libs.versions.jacoco.get()) -} - -// Excluding all java classes and stuff that should not be covered -ext { - jacocoExclude = [ - '**/activity/**', - '**/audiofx/**', - '**/fragment/**', - '**/provider/**', - '**/receiver/**', - '**/service/**', - '**/Test/**', - '**/util/**', - '**/view/**', - '**/R$*.class', - '**/R.class', - '**/BuildConfig.class', - '**/di/**', - 'jdk.internal.*' - ] -} - -jacoco { - toolVersion(libs.versions.jacoco.get()) -} - -tasks.withType(Test) { - jacoco.includeNoLocationClasses = true - jacoco.excludes += jacocoExclude -}