From 8fd8cd61ed938eb149a48e8ba9521585c3b8029e Mon Sep 17 00:00:00 2001 From: Stu Date: Thu, 4 Dec 2014 22:54:57 +0000 Subject: [PATCH 1/5] derive version from git tags --- build.gradle | 21 +++++++++++++++------ gradle.properties | 1 - 2 files changed, 15 insertions(+), 7 deletions(-) delete mode 100644 gradle.properties diff --git a/build.gradle b/build.gradle index 22575c1..3784be3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,11 +1,21 @@ -buildscript { - repositories { - mavenCentral() +def isDirty = { -> + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', 'status', '--porcelain' + standardOutput = stdout } - dependencies { - classpath 'com.github.townsfolk:gradle-release:1.2' + return stdout.toString().trim() +} +def getVersionName = { -> + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', 'describe', '--tags' + standardOutput = stdout } + def gitVersionName = stdout.toString().trim() + return isDirty() ? gitVersionName + '-SNAPSHOT' : gitVersionName } +version = getVersionName() repositories { mavenCentral() @@ -19,7 +29,6 @@ ext { apply plugin: 'idea' apply plugin: 'maven' apply plugin: 'groovy' -apply plugin: 'release' group 'org.scoverage' diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 69b9877..0000000 --- a/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -version=0.5-SNAPSHOT From c1324e260244fb24afa17127ca20a29ad40ebc51 Mon Sep 17 00:00:00 2001 From: Stu Date: Sun, 7 Dec 2014 11:33:12 +0000 Subject: [PATCH 2/5] breaking change: support only scoverage 1.0+ --- build.gradle | 2 +- src/main/groovy/org/scoverage/ScoverageReport.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 3784be3..861f76c 100644 --- a/build.gradle +++ b/build.gradle @@ -40,7 +40,7 @@ configurations { dependencies { compile gradleApi() compile localGroovy() - scoverage 'org.scoverage:scalac-scoverage-plugin_2.10:0.99.5' + scoverage 'org.scoverage:scalac-scoverage-plugin_2.11:1.0.1','org.scoverage:scalac-scoverage-plugin_2.11:1.0.1' } task groovydocJar(type: Jar, dependsOn: groovydoc) { diff --git a/src/main/groovy/org/scoverage/ScoverageReport.java b/src/main/groovy/org/scoverage/ScoverageReport.java index 06776b7..0b623ab 100644 --- a/src/main/groovy/org/scoverage/ScoverageReport.java +++ b/src/main/groovy/org/scoverage/ScoverageReport.java @@ -4,6 +4,7 @@ import scala.collection.Set; import scoverage.Coverage; import scoverage.IOUtils; +import scoverage.Serializer; import scoverage.report.CoberturaXmlWriter; import scoverage.report.ScoverageHtmlWriter; @@ -19,13 +20,14 @@ public static void main(String... args) { File sourceDir = new File(args[0]); File dataDir = new File(args[1]); File reportDir = new File(args[2]); + reportDir.mkdirs(); - File coverageFile = IOUtils.coverageFile(dataDir); + File coverageFile = Serializer.coverageFile(dataDir); File[] array = IOUtils.findMeasurementFiles(dataDir); // TODO: patch scoverage core to use a consistent collection type? Seq measurementFiles = scala.collection.JavaConversions.asScalaBuffer(Arrays.asList(array)); - Coverage coverage = IOUtils.deserialize(coverageFile); + Coverage coverage = Serializer.deserialize(coverageFile); Set measurements = IOUtils.invoked(measurementFiles); coverage.apply(measurements); From 2987271f02065ae910d213453f5b3d03885d75dc Mon Sep 17 00:00:00 2001 From: Stu Date: Sun, 7 Dec 2014 12:29:43 +0000 Subject: [PATCH 3/5] add runtime dependency to test project --- src/test/happyday/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/happyday/build.gradle b/src/test/happyday/build.gradle index fa85c2b..5f69f1c 100644 --- a/src/test/happyday/build.gradle +++ b/src/test/happyday/build.gradle @@ -17,7 +17,8 @@ repositories { } dependencies { - scoverage 'org.scoverage:scalac-scoverage-plugin_2.11:0.99.5' + scoverage 'org.scoverage:scalac-scoverage-plugin_2.11:1.0.1', + 'org.scoverage:scalac-scoverage-runtime_2.11:1.0.1' compile 'org.scala-lang:scala-library:2.11.0' testCompile 'junit:junit:4.11' } From f36fde74e9a6a20834e05eaf46e25fa39e260646 Mon Sep 17 00:00:00 2001 From: Stu Date: Thu, 18 Dec 2014 07:52:22 +0000 Subject: [PATCH 4/5] runtime dependency not required for compiling the plugin --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 861f76c..427cc61 100644 --- a/build.gradle +++ b/build.gradle @@ -40,7 +40,7 @@ configurations { dependencies { compile gradleApi() compile localGroovy() - scoverage 'org.scoverage:scalac-scoverage-plugin_2.11:1.0.1','org.scoverage:scalac-scoverage-plugin_2.11:1.0.1' + scoverage 'org.scoverage:scalac-scoverage-plugin_2.11:1.0.1' } task groovydocJar(type: Jar, dependsOn: groovydoc) { From 66864461947e207374fb15636e9f3c41ab07f187 Mon Sep 17 00:00:00 2001 From: Stu Date: Sun, 21 Dec 2014 21:16:01 +0000 Subject: [PATCH 5/5] 1) instrumentation requires a single plugin jar and the runtime jar must be also be supplied on the classpath 2) testing instrumented code does not require the plugin jar 3) reporting on coverage files requires all scoverage jars. --- .../org/scoverage/ScoverageExtension.groovy | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/groovy/org/scoverage/ScoverageExtension.groovy b/src/main/groovy/org/scoverage/ScoverageExtension.groovy index a7848ef..14cc301 100644 --- a/src/main/groovy/org/scoverage/ScoverageExtension.groovy +++ b/src/main/groovy/org/scoverage/ScoverageExtension.groovy @@ -2,7 +2,8 @@ package org.scoverage import org.gradle.api.Action import org.gradle.api.Project -import org.gradle.api.artifacts.ResolvedConfiguration +import org.gradle.api.artifacts.Configuration +import org.gradle.api.file.FileCollection import org.gradle.api.plugins.JavaPlugin import org.gradle.api.plugins.scala.ScalaPlugin import org.gradle.api.tasks.JavaExec @@ -77,13 +78,14 @@ class ScoverageExtension { extension.dataDir.mkdirs() extension.reportDir.mkdirs() - ResolvedConfiguration s = t.configurations[ScoveragePlugin.CONFIGURATION_NAME].resolvedConfiguration - String pluginPath = s.getFirstLevelModuleDependencies().iterator().next().moduleArtifacts.iterator().next().file.absolutePath + Configuration configuration = t.configurations[ScoveragePlugin.CONFIGURATION_NAME] + File pluginFile = configuration.filter { it.name.contains('plugin') }.iterator().next() + FileCollection pluginDependencies = configuration.filter { it != pluginFile } t.tasks[ScoveragePlugin.COMPILE_NAME].configure { - List plugin = ['-Xplugin:' + pluginPath] + List plugin = ['-Xplugin:' + pluginFile.absolutePath] List parameters = scalaCompileOptions.additionalParameters if (parameters != null) { plugin.addAll(parameters) @@ -100,19 +102,18 @@ class ScoverageExtension { } scalaCompileOptions.additionalParameters = plugin // exclude the scala libraries that are added to enable scala version detection - classpath += t.configurations[ScoveragePlugin.CONFIGURATION_NAME] + classpath += pluginDependencies } t.tasks[ScoveragePlugin.TEST_NAME].configure { def existingClasspath = classpath classpath = t.files(t.sourceSets[ScoveragePlugin.CONFIGURATION_NAME].output.classesDir) + - project.configurations[ScoveragePlugin.CONFIGURATION_NAME] + + pluginDependencies + existingClasspath } t.tasks[ScoveragePlugin.REPORT_NAME].configure { - classpath = project.buildscript.configurations.classpath + - project.configurations[ScoveragePlugin.CONFIGURATION_NAME] + classpath = project.buildscript.configurations.classpath + configuration main = 'org.scoverage.ScoverageReport' args = [ extension.sources,