azkaban-aplcache

code coverage initiative (#1830) Code coverage measures

7/10/2018 1:10:03 PM

Changes

.travis.yml 5(+4 -1)

build.gradle 38(+38 -0)

Details

.travis.yml 5(+4 -1)

diff --git a/.travis.yml b/.travis.yml
index facfdc7..08ebc0a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,7 @@ languages: java
 jdk:
   - oraclejdk8
 sudo: false
-script: ./gradlew clean build --scan --no-daemon --info
+script: ./gradlew clean build coveralls --scan --no-daemon --info
 
 # see https://docs.travis-ci.com/user/languages/java/#Projects-Using-Gradle
 before_cache:
@@ -18,3 +18,6 @@ env:
   global:
     # Reduce the memory pressure on Travis CI to reduce build failures.
     - GRADLE_OPTS="-Xms128m"
+
+after_success:
+  - bash <(curl -s https://codecov.io/bash)

build.gradle 38(+38 -0)

diff --git a/build.gradle b/build.gradle
index f673be1..e878238 100644
--- a/build.gradle
+++ b/build.gradle
@@ -29,6 +29,8 @@ buildscript {
 
 plugins {
     id 'com.gradle.build-scan' version '1.9'
+    id 'com.github.kt3k.coveralls' version '2.6.3'
+    id 'jacoco'
 }
 
 buildScan {
@@ -45,6 +47,8 @@ compareGradleBuilds {
 }
 
 allprojects {
+    apply plugin: 'jacoco'
+
     repositories {
         mavenCentral()
         mavenLocal()
@@ -227,3 +231,37 @@ if (System.env.TRAVIS == 'true') {
         }
     }
 }
+
+def publishedProjects = subprojects.findAll()
+
+// Aggregate all subproject reports into one.
+task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
+    description = 'Generates an aggregate report from all subprojects'
+
+    dependsOn(publishedProjects.test)
+
+    // JacocoReport-type task requires users to specify which classes to be covered
+    // See details in
+    // https://docs.gradle.org/current/dsl/org.gradle.testing.jacoco.tasks.JacocoReport.html
+    sourceDirectories = files(publishedProjects.sourceSets.main.allSource.srcDirs)
+    classDirectories = files(publishedProjects.sourceSets.main.output)
+    executionData = files(publishedProjects.jacocoTestReport.executionData)
+
+    doFirst {
+        executionData = files(executionData.findAll { it.exists() })
+    }
+
+    reports {
+        html.enabled = true // human readable
+        xml.enabled = true // required by coveralls
+    }
+}
+
+coveralls {
+    sourceDirs = publishedProjects.sourceSets.main.allSource.srcDirs.flatten()
+    jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml"
+}
+
+tasks.coveralls {
+    dependsOn jacocoRootReport
+}