# HG changeset patch # User smith@nwoca.org # Date 1370541267 -3600 # Node ID 8a7c3673dee958ffe11e919835604098cca26a0b # Parent ca34c067b178d00b1cdad8221bbe61a60efb99f4 CM-133: add fullCoverageReport task for consolidated coverage report diff -r ca34c067b178 -r 8a7c3673dee9 metrics.gradle --- a/metrics.gradle Wed Jun 05 22:45:58 2013 +0100 +++ b/metrics.gradle Thu Jun 06 18:54:27 2013 +0100 @@ -27,16 +27,57 @@ } } -//gradle.rootProject.afterEvaluate { project -> -// -// project.jacocoTestReport { -// -// -// } -// -//} +if (gradle.environment.coverage) { + + configurations { + jacocoAntRoot + } + dependencies { + jacocoAntRoot 'org.jacoco:org.jacoco.ant:0.6.2.201302030002' + } + + task fullCoverageReport << { + ant { + taskdef(name:'jacocoreport', classname: 'org.jacoco.ant.ReportTask', classpath: configurations.jacocoAntRoot.asPath) + + mkdir dir: "${buildDir.path}/reports/coverage" + + jacocoreport { + executiondata { + fileset(dir: "${buildDir.path}/coverage-results") { + include name: '*.jacoco.exec' + } + } + + structure(name: project.name) { + classfiles { + subprojects.each { project -> + fileset dir: project.sourceSets.main.output.classesDir + } + } + sourcefiles(encoding: 'CP1252') { + subprojects.each { project -> + project.sourceSets.main.allGroovy.srcDirs.findAll { file(it).exists() } each { + fileset dir: "$it" + } + } + } + } + xml destfile: "${buildDir.path}/reports/coverage/jacoco.xml" + html destdir: "${buildDir.path}/reports/coverage" + } + } + } + + fullCoverageReport.dependsOn { + subprojects.collect { project -> + project.copyCoverageData.path + } + } + +} subprojects { afterEvaluate { project -> @@ -73,6 +114,13 @@ dependsOn jacocoTestReport } + task copyCoverageData(dependsOn: test, type: Copy) { + from project.test.jacoco.destPath + into "${rootProject.buildDir.path}/coverage-results" + include 'test.exec' + rename 'test.exec', "${project.name}.jacoco.exec" + } + } sonarRunner {