From 594c16ce7d85480884dfe7b882ef3739f3c44940 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 16:58:28 -0800 Subject: [PATCH 01/11] add coveralls gradle plugin from to build.gradle --- build.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index bfea9deb5..2a0f1c3b7 100644 --- a/build.gradle +++ b/build.gradle @@ -12,8 +12,10 @@ buildscript { } plugins { - id 'nebula.optional-base' version '3.2.0' + id 'com.github.kt3k.coveralls' version '2.8.2' id 'me.champeau.gradle.jmh' version '0.3.1' + id 'nebula.optional-base' version '3.2.0' + id 'net.saliman.cobertura' version '2.3.1' } allprojects { @@ -176,3 +178,5 @@ task ship() { dependsOn(':core-api:ship', ':core-httpclient-impl:ship') } +cobertura.coverageFormats = ['html', 'xml'] // coveralls plugin depends on xml format report + From 16a37f531dde96134f19e2d134ca4a06abc90348 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 17:24:01 -0800 Subject: [PATCH 02/11] use jacoco. refresh gradle wrapper --- .travis.yml | 2 ++ build.gradle | 12 ++++++++---- gradle/wrapper/gradle-wrapper.jar | Bin 54329 -> 54333 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1cea1a0ae..bd37991cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,3 +22,5 @@ branches: only: - master - /^\d+\.\d+\.\d+(-SNAPSHOT|-alpha|-beta)?\d*$/ # trigger builds on tags which are semantically versioned to ship the SDK. +after_success: + - ./gradlew jacocoTestReport coveralls diff --git a/build.gradle b/build.gradle index 2a0f1c3b7..49deb8686 100644 --- a/build.gradle +++ b/build.gradle @@ -13,14 +13,15 @@ buildscript { plugins { id 'com.github.kt3k.coveralls' version '2.8.2' + id 'jacoco' id 'me.champeau.gradle.jmh' version '0.3.1' id 'nebula.optional-base' version '3.2.0' - id 'net.saliman.cobertura' version '2.3.1' } allprojects { group = 'com.optimizely.ab' apply plugin: 'idea' + apply plugin: 'jacoco' } apply from: 'gradle/publish.gradle' @@ -36,7 +37,6 @@ subprojects { apply plugin: 'com.jfrog.bintray' apply plugin: 'findbugs' apply plugin: 'java' - apply plugin: 'jacoco' apply plugin: 'maven-publish' apply plugin: 'me.champeau.gradle.jmh' apply plugin: 'nebula.optional-base' @@ -178,5 +178,9 @@ task ship() { dependsOn(':core-api:ship', ':core-httpclient-impl:ship') } -cobertura.coverageFormats = ['html', 'xml'] // coveralls plugin depends on xml format report - +jacocoTestReport { + reports { + xml.enabled = true // coveralls plugin depends on xml format report + html.enabled = true + } +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 01b8bf6b1f99cad9213fc495b33ad5bbab8efd20..c44b679acd3f794ddbb3aa5e919244914911014a 100644 GIT binary patch delta 705 zcmYL{-%Ha`7{+(rjm?$j*GjXaTd)e{D~3xfrA01^mTOixDlKYW%oMDZpcjQmAYF7} zlSc~EjINT1VkqRYY;&8=`Ey%dMEwKRMHJLc5FJmp&dvEe&-1=7oWmO&)xH_k`u7`q zHjI_nH5$#C{#tj|=k4D+zI8B-p9jW&hx1k|b(&L7Lzb!?I-4(QwjexR_rC*MBModA ztr05=;X$ODeZh5o0X{`kGBbpu`EW6grwIk_D5rCJVVU9A8_+nbz+q4}ijnKbhETMb z9vVf73AM3`wNbH)>;qO}9(D)TnI^JY9IHGZm|eR$6X{y|)@K&nf1U)-PW+ObaS4bPBl>?F&|#=#u!Oi{qn6TsNdFTeQ*PZizkJMIuq~a*@;R zThjWuc#=wb1s=lNq=I`(oHZk`)JB*3WbW_R%JAv zT5x*BL(aiW*f+RVuYi)Ab`4A0o;*M|MckdvyQ`(p@W@@Q3QCL9d}lUxc3_mF^p| z)(+$?$+!?!XmgL2Dl--GUMhVw3CmctAKN1;-QLI1jP}S0b_l-6c`B|Fb$eAl@1l~v zTHx8GV`M%eWMHYDMq7n^)@tNUWaLH_l5N6z7|ny-WQqmSHX?qdcxqq90zj1+I8A zyNsE52L%W4d7y&#lJUtS8~MDmE9Mc&%#a?}S88c~D2pZ7SW(F~l0_p9C+f*Ms)c=t zlQibl@JFJJ4vcB&PPUM1T*F7>X52~2*tV+Br3uXrOz7pkHdv1Pb+ly1;!Uj y(VecLYYSXfi_v^YE9?d`=^l0po$FWm=X$$dXa4_}n*PpBoP999uarWIf8aNW=qTF& diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 933b6473c..568c50bf3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-bin.zip From 36205b46d1261492633be912238b77d5cca63db4 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 18:00:32 -0800 Subject: [PATCH 03/11] upgrade to jacoco version 0.8.0 --- build.gradle | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/build.gradle b/build.gradle index 49deb8686..b24f7ec99 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,14 @@ allprojects { group = 'com.optimizely.ab' apply plugin: 'idea' apply plugin: 'jacoco' + + repositories { + jcenter() + } + + jacoco { + toolVersion = '0.8.0' + } } apply from: 'gradle/publish.gradle' @@ -184,3 +192,16 @@ jacocoTestReport { html.enabled = true } } + +task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { + dependsOn = subprojects.test + sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs) + classDirectories = files(subprojects.sourceSets.main.output) + executionData = files(subprojects.jacocoTestReport.executionData) + reports { + html.enabled = true + xml.enabled = true + csv.enabled = false + xml.destination = "${buildDir}/reports/jacoco/test/jacocoTestReport.xml" + } +} From eaecde5a23af0d6f4c5e336e82831343597bdbe3 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 18:16:56 -0800 Subject: [PATCH 04/11] execut jacoco report in subprojects only if execution data exists --- .travis.yml | 2 +- build.gradle | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index bd37991cd..08786a92b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,4 @@ branches: - master - /^\d+\.\d+\.\d+(-SNAPSHOT|-alpha|-beta)?\d*$/ # trigger builds on tags which are semantically versioned to ship the SDK. after_success: - - ./gradlew jacocoTestReport coveralls + - ./gradlew jacocoRootReport coveralls diff --git a/build.gradle b/build.gradle index b24f7ec99..8e6b20e1d 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,7 @@ allprojects { subprojects { apply plugin: 'com.jfrog.bintray' apply plugin: 'findbugs' + apply plugin: 'jacoco' apply plugin: 'java' apply plugin: 'maven-publish' apply plugin: 'me.champeau.gradle.jmh' @@ -180,6 +181,17 @@ subprojects { task ship() { dependsOn('bintrayUpload') } + + jacocoTestReport { + additionalSourceDirs = files(sourceSets.main.allSource.srcDirs) + sourceDirectories = files(sourceSets.main.allSource.srcDirs) + classDirectories = files(sourceSets.main.output) + reports { + html.enabled = true + xml.enabled = true + csv.enabled = false + } + } } task ship() { @@ -194,14 +206,27 @@ jacocoTestReport { } task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { + description = 'Generates an aggregate report from all subprojects' dependsOn = subprojects.test + + additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs) sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs) classDirectories = files(subprojects.sourceSets.main.output) executionData = files(subprojects.jacocoTestReport.executionData) + reports { html.enabled = true xml.enabled = true csv.enabled = false - xml.destination = "${buildDir}/reports/jacoco/test/jacocoTestReport.xml" + } + + doFirst { + executionData = files(executionData.findAll { + it.exists() + }) + } + + coveralls { + jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" } } From de733d71028cbc70956dd73ab1d5e30981286818 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 18:27:03 -0800 Subject: [PATCH 05/11] add coveralls.jacocoReportPath --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 8e6b20e1d..38b83f84f 100644 --- a/build.gradle +++ b/build.gradle @@ -198,6 +198,8 @@ task ship() { dependsOn(':core-api:ship', ':core-httpclient-impl:ship') } +coveralls.jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" + jacocoTestReport { reports { xml.enabled = true // coveralls plugin depends on xml format report From 596d6f12bd2ef0126d0277877ecc890b75b83149 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 18:32:38 -0800 Subject: [PATCH 06/11] just use regular test report --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 08786a92b..bd37991cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,4 @@ branches: - master - /^\d+\.\d+\.\d+(-SNAPSHOT|-alpha|-beta)?\d*$/ # trigger builds on tags which are semantically versioned to ship the SDK. after_success: - - ./gradlew jacocoRootReport coveralls + - ./gradlew jacocoTestReport coveralls From d8a2bdda2cc790ff9ccb91d77b118d12f17fbc62 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 18:44:04 -0800 Subject: [PATCH 07/11] remove coveralls report path and root report command --- build.gradle | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/build.gradle b/build.gradle index 38b83f84f..850495cc8 100644 --- a/build.gradle +++ b/build.gradle @@ -198,37 +198,9 @@ task ship() { dependsOn(':core-api:ship', ':core-httpclient-impl:ship') } -coveralls.jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" - jacocoTestReport { reports { xml.enabled = true // coveralls plugin depends on xml format report html.enabled = true } } - -task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { - description = 'Generates an aggregate report from all subprojects' - dependsOn = subprojects.test - - additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs) - sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs) - classDirectories = files(subprojects.sourceSets.main.output) - executionData = files(subprojects.jacocoTestReport.executionData) - - reports { - html.enabled = true - xml.enabled = true - csv.enabled = false - } - - doFirst { - executionData = files(executionData.findAll { - it.exists() - }) - } - - coveralls { - jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" - } -} From 67d437d66fb8abf80eb44a9fcfe0c1929dbcfc26 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 19:00:33 -0800 Subject: [PATCH 08/11] use root jacocoTestReport only --- build.gradle | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/build.gradle b/build.gradle index 850495cc8..a26ccff94 100644 --- a/build.gradle +++ b/build.gradle @@ -182,16 +182,6 @@ subprojects { dependsOn('bintrayUpload') } - jacocoTestReport { - additionalSourceDirs = files(sourceSets.main.allSource.srcDirs) - sourceDirectories = files(sourceSets.main.allSource.srcDirs) - classDirectories = files(sourceSets.main.output) - reports { - html.enabled = true - xml.enabled = true - csv.enabled = false - } - } } task ship() { From 2658c6cf421762ed4e5f35a7fc0df97b94391872 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 19:47:02 -0800 Subject: [PATCH 09/11] go back to root report --- .travis.yml | 2 +- build.gradle | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index bd37991cd..08786a92b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,4 @@ branches: - master - /^\d+\.\d+\.\d+(-SNAPSHOT|-alpha|-beta)?\d*$/ # trigger builds on tags which are semantically versioned to ship the SDK. after_success: - - ./gradlew jacocoTestReport coveralls + - ./gradlew jacocoRootReport coveralls diff --git a/build.gradle b/build.gradle index a26ccff94..411060567 100644 --- a/build.gradle +++ b/build.gradle @@ -190,7 +190,37 @@ task ship() { jacocoTestReport { reports { + description = 'Generate test report' + dependsOn subprojects.test + xml.enabled = true // coveralls plugin depends on xml format report html.enabled = true } } + +task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { + description = 'Generates an aggregate report from all subprojects' + dependsOn = subprojects.test + + additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs) + sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs) + classDirectories = files(subprojects.sourceSets.main.output) + executionData = files(subprojects.jacocoTestReport.executionData) + + reports { + html.enabled = true + xml.enabled = true + csv.enabled = false + } + + doFirst { + executionData = files(executionData.findAll { + it.exists() + }) + } + + coveralls { + jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" + } +} + From e71ad2b3511fb350e3f9d234cb65fb125c3c77e3 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 19:59:19 -0800 Subject: [PATCH 10/11] try stuff from caffeine gradle --- .travis.yml | 2 +- build.gradle | 51 +++++++++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/.travis.yml b/.travis.yml index 08786a92b..cde21cbf7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,4 @@ branches: - master - /^\d+\.\d+\.\d+(-SNAPSHOT|-alpha|-beta)?\d*$/ # trigger builds on tags which are semantically versioned to ship the SDK. after_success: - - ./gradlew jacocoRootReport coveralls + - ./gradlew coveralls uploadArchives diff --git a/build.gradle b/build.gradle index 411060567..0d6ebc9f0 100644 --- a/build.gradle +++ b/build.gradle @@ -188,39 +188,42 @@ task ship() { dependsOn(':core-api:ship', ':core-httpclient-impl:ship') } -jacocoTestReport { - reports { - description = 'Generate test report' - dependsOn subprojects.test +// Only report code coverage for projects that are distributed +def publishedProjects = subprojects.findAll { it.path != ':simulator' } - xml.enabled = true // coveralls plugin depends on xml format report - html.enabled = true +task jacocoMerge(type: JacocoMerge) { + publishedProjects.each { subproject -> + executionData subproject.tasks.withType(Test) + } + doFirst { + executionData = files(executionData.findAll { it.exists() }) } } -task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { +task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') { description = 'Generates an aggregate report from all subprojects' - dependsOn = subprojects.test + dependsOn publishedProjects.test, jacocoMerge - additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs) - sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs) - classDirectories = files(subprojects.sourceSets.main.output) - executionData = files(subprojects.jacocoTestReport.executionData) + additionalSourceDirs = files(publishedProjects.sourceSets.main.allSource.srcDirs) + sourceDirectories = files(publishedProjects.sourceSets.main.allSource.srcDirs) + classDirectories = files(publishedProjects.sourceSets.main.output) + executionData jacocoMerge.destinationFile reports { - html.enabled = true - xml.enabled = true - csv.enabled = false - } - - doFirst { - executionData = files(executionData.findAll { - it.exists() - }) + html.enabled = true // human readable + xml.enabled = true // required by coveralls } +} - coveralls { - jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" - } +coveralls { + sourceDirs = publishedProjects.sourceSets.main.allSource.srcDirs.flatten() + jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" } +tasks.coveralls { + group = 'Coverage reports' + description = 'Uploads the aggregated coverage report to Coveralls' + + dependsOn jacocoRootReport + onlyIf { System.env.'CI' && !JavaVersion.current().isJava9Compatible() } +} From e3ae475884b5116c3cba383063797720bf509c96 Mon Sep 17 00:00:00 2001 From: wangjoshuah Date: Fri, 23 Feb 2018 20:07:14 -0800 Subject: [PATCH 11/11] use console plain --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cde21cbf7..d74607cc0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,4 @@ branches: - master - /^\d+\.\d+\.\d+(-SNAPSHOT|-alpha|-beta)?\d*$/ # trigger builds on tags which are semantically versioned to ship the SDK. after_success: - - ./gradlew coveralls uploadArchives + - ./gradlew coveralls uploadArchives --console plain