From e0978232bcadd4ef74950825bf017392b7dd5d32 Mon Sep 17 00:00:00 2001 From: Henryk Konsek Date: Sat, 11 May 2013 20:57:21 +0200 Subject: [PATCH] Added Cobertura task to Gradle. --- build.gradle | 3 +++ cobertura.gradle | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 cobertura.gradle diff --git a/build.gradle b/build.gradle index 0bc6746..d8e3930 100644 --- a/build.gradle +++ b/build.gradle @@ -8,6 +8,8 @@ apply plugin: 'propdeps-maven' apply plugin: 'propdeps-idea' apply plugin: 'propdeps-eclipse' +apply from: 'cobertura.gradle' + group 'org.springframework.scala' ext { @@ -17,6 +19,7 @@ ext { repositories { maven { url "http://repo.springsource.org/libs-snapshot" } + mavenCentral() } dependencies { diff --git a/cobertura.gradle b/cobertura.gradle new file mode 100644 index 0000000..8c4c60b --- /dev/null +++ b/cobertura.gradle @@ -0,0 +1,55 @@ +def coberturaDependency = 'net.sourceforge.cobertura:cobertura:1.9.4.1' + +logger.info 'Configuring Cobertura Plugin' + +configurations { + coberturaRuntime { extendsFrom testRuntime } +} + +dependencies { + coberturaRuntime coberturaDependency +} + +def serFile = "${project.buildDir}/cobertura.ser" +def classes = "${sourceSets.main.output.classesDir}" +def coberturaClasses = "${classes}-cobertura" + + +task cobertura(type: Test) { + dependencies { + testRuntime coberturaDependency + } + + systemProperties['net.sourceforge.cobertura.datafile'] = serFile +} + +cobertura.doFirst { + if (System.getProperty('java.version').startsWith('1.7')) { + logger.warn 'Cobertura requires Java version <= 1.6 to work correctly. Skipping Cobertura instrumentation.' + } else { + logger.quiet 'Instrumenting classes for Cobertura' + ant { + delete(file: serFile, failonerror: false) + delete(dir: coberturaClasses, failonerror: false) + copy(todir: coberturaClasses) { fileset(dir: classes) } + + taskdef(resource: 'tasks.properties', classpath: configurations.coberturaRuntime.asPath) + 'cobertura-instrument'(datafile: serFile) { + fileset(dir: classes, + includes: '**/*.class', + excludes: '**/*Test.class') + } + } + } +} + +cobertura.doLast { + if (new File(coberturaClasses).exists()) { + ant.'cobertura-report'(destdir: "${reporting.baseDir}/cobertura", + format: 'html', srcdir: 'src/main/scala', datafile: serFile) + + ant.delete(file: classes) + ant.move(file: coberturaClasses, tofile: classes) + } + +} \ No newline at end of file