diff --git a/src/main/groovy/org/scoverage/AggregateReportApp.java b/src/main/groovy/org/scoverage/AggregateReportApp.java index 914bc89..2bf2f14 100644 --- a/src/main/groovy/org/scoverage/AggregateReportApp.java +++ b/src/main/groovy/org/scoverage/AggregateReportApp.java @@ -1,9 +1,7 @@ package org.scoverage; import scoverage.Coverage; -import scoverage.report.CoberturaXmlWriter; import scoverage.report.CoverageAggregator; -import scoverage.report.ScoverageHtmlWriter; import java.io.File; diff --git a/src/main/groovy/org/scoverage/OverallCheckTask.groovy b/src/main/groovy/org/scoverage/OverallCheckTask.groovy index f56d0ad..58dca3b 100644 --- a/src/main/groovy/org/scoverage/OverallCheckTask.groovy +++ b/src/main/groovy/org/scoverage/OverallCheckTask.groovy @@ -76,7 +76,13 @@ class OverallCheckTask extends DefaultTask { File reportFile = new File(reportDir ? reportDir : extension.reportDir, coverageType.fileName) try { - Node xml = parser.parse(reportFile) + String encoding = ScoveragePlugin.encoding(project) + Node xml + if (encoding) { + xml = parser.parse(new InputStreamReader(new FileInputStream(reportFile), encoding)) + } else { + xml = parser.parse(reportFile) + } NumberFormat nf = NumberFormat.getInstance(locale == null ? Locale.getDefault() : locale); Double coverageValue = nf.parse(xml.attribute(coverageType.paramName) as String).doubleValue(); Double overallRate = coverageType.normalize(coverageValue) diff --git a/src/main/groovy/org/scoverage/ScoverageAggregate.groovy b/src/main/groovy/org/scoverage/ScoverageAggregate.groovy index 8703d09..40923df 100644 --- a/src/main/groovy/org/scoverage/ScoverageAggregate.groovy +++ b/src/main/groovy/org/scoverage/ScoverageAggregate.groovy @@ -12,6 +12,10 @@ class ScoverageAggregate extends JavaExec { def extension = ScoveragePlugin.extensionIn(project) setClasspath(ScoveragePlugin.extensionIn(project).pluginClasspath) setMain('org.scoverage.AggregateReportApp') + String encoding = ScoveragePlugin.encoding(project) + if (encoding) { + jvmArgs("-Dfile.encoding=$encoding") + } def reportPath = reportDirOrDefault() setArgs([ project.projectDir, diff --git a/src/main/groovy/org/scoverage/ScoverageExtension.groovy b/src/main/groovy/org/scoverage/ScoverageExtension.groovy index ee198b0..a6a9e38 100644 --- a/src/main/groovy/org/scoverage/ScoverageExtension.groovy +++ b/src/main/groovy/org/scoverage/ScoverageExtension.groovy @@ -44,8 +44,8 @@ class ScoverageExtension { ScoverageExtension(Project project) { - project.plugins.apply(JavaPlugin.class); - project.plugins.apply(ScalaPlugin.class); + project.plugins.apply(JavaPlugin.class) + project.plugins.apply(ScalaPlugin.class) project.afterEvaluate(configureRuntimeOptions) project.configurations.create(ScoveragePlugin.CONFIGURATION_NAME) { @@ -76,7 +76,7 @@ class ScoverageExtension { runtimeClasspath = it.output + mainSourceSet.output + project.configurations.scoverage + original.runtimeClasspath } - def scoverageJar = project.tasks.create('jarScoverage', Jar.class) { + project.tasks.create('jarScoverage', Jar.class) { dependsOn('scoverageClasses') classifier = ScoveragePlugin.CONFIGURATION_NAME from mainSourceSet.output @@ -87,13 +87,13 @@ class ScoverageExtension { project.tasks.create(ScoveragePlugin.TEST_NAME, Test.class) { conventionMapping.map("testClassesDir", new Callable() { - public Object call() throws Exception { - return testSourceSet.output.classesDir; + Object call() throws Exception { + return testSourceSet.output.classesDir } }) conventionMapping.map("classpath", new Callable() { - public Object call() throws Exception { - return testSourceSet.runtimeClasspath; + Object call() throws Exception { + return testSourceSet.runtimeClasspath } }) } @@ -126,7 +126,7 @@ class ScoverageExtension { File pluginFile try { pluginFile = configuration.filter { it.name.contains('plugin') }.iterator().next() - } catch(NoSuchElementException e) { + } catch (NoSuchElementException ignored) { throw new GradleException("Could not find a plugin jar in configuration '${ScoveragePlugin.CONFIGURATION_NAME}'") } @@ -150,6 +150,10 @@ class ScoverageExtension { GFileUtils.deleteDirectory(destinationDir) } scalaCompileOptions.additionalParameters = parameters + String encoding = scalaCompileOptions.encoding + if (encoding) { + scalaCompileOptions.forkOptions.jvmArgs.add('-Dfile.encoding=' + encoding) + } // the compile task creates a store of measured statements outputs.file(new File(extension.dataDir, 'scoverage.coverage.xml')) } diff --git a/src/main/groovy/org/scoverage/ScoveragePlugin.groovy b/src/main/groovy/org/scoverage/ScoveragePlugin.groovy index 31b955e..dc55a9f 100644 --- a/src/main/groovy/org/scoverage/ScoveragePlugin.groovy +++ b/src/main/groovy/org/scoverage/ScoveragePlugin.groovy @@ -2,6 +2,7 @@ package org.scoverage import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.tasks.scala.ScalaCompile class ScoveragePlugin implements Plugin { static String CONFIGURATION_NAME = 'scoverage' @@ -22,4 +23,9 @@ class ScoveragePlugin implements Plugin { protected static ScoverageExtension extensionIn(Project project) { project.extensions[CONFIGURATION_NAME] } + + protected static String encoding(Project project) { + ScalaCompile compile = project.tasks[ScoveragePlugin.COMPILE_NAME] as ScalaCompile + compile.scalaCompileOptions.encoding + } } diff --git a/src/main/groovy/org/scoverage/ScoverageReport.groovy b/src/main/groovy/org/scoverage/ScoverageReport.groovy index ab1f1b7..a987c7d 100644 --- a/src/main/groovy/org/scoverage/ScoverageReport.groovy +++ b/src/main/groovy/org/scoverage/ScoverageReport.groovy @@ -8,6 +8,10 @@ class ScoverageReport extends JavaExec { void exec() { def extension = ScoveragePlugin.extensionIn(project) extension.reportDir.mkdirs() + String encoding = ScoveragePlugin.encoding(project) + if (encoding) { + jvmArgs("-Dfile.encoding=$encoding") + } setClasspath(extension.pluginClasspath) setMain('org.scoverage.SingleReportApp') setArgs([