From 8e812c12919988ee9675027d44a74aecd75babf4 Mon Sep 17 00:00:00 2001 From: Grzegorz Slowikowski Date: Sun, 31 Jan 2016 12:52:14 +0100 Subject: [PATCH] Get source encoding from `scalacOptions in (Compile)` and pass to `ScoverageHtmlWriter.write` method. --- src/main/scala/scoverage/ScoverageSbtPlugin.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index 0c3682a4..a56e4704 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -81,6 +81,7 @@ object ScoverageSbtPlugin extends AutoPlugin { coverageOutputHTML.value, coverageOutputDebug.value, coverageOutputTeamCity.value, + sourceEncoding((scalacOptions in (Compile)).value), log) checkCoverage(cov, log, coverageMinimum.value, coverageFailOnMinimum.value) @@ -105,6 +106,7 @@ object ScoverageSbtPlugin extends AutoPlugin { coverageOutputHTML.value, coverageOutputDebug.value, coverageOutputTeamCity.value, + sourceEncoding((scalacOptions in (Compile)).value), log) val cfmt = cov.statementCoverageFormatted log.info(s"Aggregation complete. Coverage was [$cfmt]") @@ -157,6 +159,7 @@ object ScoverageSbtPlugin extends AutoPlugin { coverageOutputHTML: Boolean, coverageDebug: Boolean, coverageOutputTeamCity: Boolean, + coverageSourceEncoding: Option[String], log: Logger): Unit = { log.info(s"Generating scoverage reports...") @@ -180,7 +183,7 @@ object ScoverageSbtPlugin extends AutoPlugin { if (coverageOutputHTML) { log.info(s"Written HTML coverage report [${reportDir.getAbsolutePath}/index.html]") - new ScoverageHtmlWriter(compileSourceDirectories, reportDir).write(coverage) + new ScoverageHtmlWriter(compileSourceDirectories, reportDir, coverageSourceEncoding).write(coverage) } if (coverageOutputTeamCity) { log.info("Writing coverage report to teamcity") @@ -259,4 +262,8 @@ object ScoverageSbtPlugin extends AutoPlugin { log.info(s"All done. Coverage was [$cfmt%]") } + + private def sourceEncoding(scalacOptions: Seq[String]): Option[String] = + scalacOptions.sliding(2).collectFirst { case Seq("-encoding", encoding) => encoding } + }