diff --git a/build.sbt b/build.sbt index 40e60d80..90efc871 100644 --- a/build.sbt +++ b/build.sbt @@ -4,6 +4,7 @@ import sbt.ScriptedPlugin.autoImport.scriptedLaunchOpts def localSnapshotVersion = "1.7.1-SNAPSHOT" def isCI = System.getenv("CI") != null +def scoverageVersion = "1.4.4" inThisBuild( List( @@ -35,12 +36,13 @@ inThisBuild( ) lazy val root = Project("sbt-scoverage", file(".")) - .enablePlugins(SbtPlugin) + .enablePlugins(SbtPlugin, BuildInfoPlugin) .settings( libraryDependencies ++= Seq( - "org.scala-lang" % "scala-compiler" % scalaVersion.value % Compile + "org.scala-lang" % "scala-compiler" % scalaVersion.value % Compile, + "org.scoverage" %% "scalac-scoverage-plugin" % scoverageVersion cross (CrossVersion.full), ), - libraryDependencies += "org.scoverage" %% "scalac-scoverage-plugin" % "1.4.3" cross (CrossVersion.full), + buildInfoKeys := Seq[BuildInfoKey]("scoverageVersion" -> scoverageVersion), Test / fork := false, Test / publishArtifact := false, Test / parallelExecution := false, diff --git a/project/plugins.sbt b/project/plugins.sbt index 4c61369e..f7bfdc77 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,2 +1,3 @@ libraryDependencies += "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value addSbtPlugin("com.geirsson" % "sbt-ci-release" % "1.5.7") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0") diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index e06c103e..099c3d72 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -5,14 +5,14 @@ import sbt._ import sbt.plugins.JvmPlugin import scoverage.report.{CoberturaXmlWriter, CoverageAggregator, ScoverageHtmlWriter, ScoverageXmlWriter} import java.time.Instant +import buildinfo.BuildInfo object ScoverageSbtPlugin extends AutoPlugin { - val OrgScoverage = "org.scoverage" - val ScalacRuntimeArtifact = "scalac-scoverage-runtime" - val ScalacPluginArtifact = "scalac-scoverage-plugin" - // this should match the version defined in build.sbt - val DefaultScoverageVersion = "1.4.3" + val orgScoverage = "org.scoverage" + val scalacRuntimeArtifact = "scalac-scoverage-runtime" + val scalacPluginArtifact = "scalac-scoverage-plugin" + val defaultScoverageVersion = BuildInfo.scoverageVersion val autoImport = ScoverageKeys lazy val ScoveragePluginConfig = config("scoveragePlugin").hide @@ -36,7 +36,7 @@ object ScoverageSbtPlugin extends AutoPlugin { coverageOutputCobertura := true, coverageOutputDebug := false, coverageOutputTeamCity := false, - coverageScalacPluginVersion := DefaultScoverageVersion + coverageScalacPluginVersion := defaultScoverageVersion ) override def buildSettings: Seq[Setting[_]] = super.buildSettings ++ @@ -57,9 +57,9 @@ object ScoverageSbtPlugin extends AutoPlugin { Seq( // We only add for "compile" because of macros. This setting could be optimed to just "test" if the handling // of macro coverage was improved. - (OrgScoverage %% (scalacRuntime(libraryDependencies.value)) % coverageScalacPluginVersion.value).cross(CrossVersion.full), + (orgScoverage %% (scalacRuntime(libraryDependencies.value)) % coverageScalacPluginVersion.value).cross(CrossVersion.full), // We don't want to instrument the test code itself, nor add to a pom when published with coverage enabled. - (OrgScoverage %% ScalacPluginArtifact % coverageScalacPluginVersion.value % ScoveragePluginConfig.name).cross(CrossVersion.full) + (orgScoverage %% scalacPluginArtifact % coverageScalacPluginVersion.value % ScoveragePluginConfig.name).cross(CrossVersion.full) ) } else Nil @@ -71,8 +71,8 @@ object ScoverageSbtPlugin extends AutoPlugin { val updateReport = update.value if (coverageEnabled.value) { val scoverageDeps: Seq[File] = updateReport matching configurationFilter(ScoveragePluginConfig.name) - val pluginPath: File = scoverageDeps.find(_.getAbsolutePath.contains(ScalacPluginArtifact)) match { - case None => throw new Exception(s"Fatal: $ScalacPluginArtifact not in libraryDependencies") + val pluginPath: File = scoverageDeps.find(_.getAbsolutePath.contains(scalacPluginArtifact)) match { + case None => throw new Exception(s"Fatal: $scalacPluginArtifact not in libraryDependencies") case Some(pluginPath) => pluginPath } Seq( @@ -90,7 +90,7 @@ object ScoverageSbtPlugin extends AutoPlugin { ) private def scalacRuntime(deps: Seq[ModuleID]): String = { - ScalacRuntimeArtifact + optionalScalaJsSuffix(deps) + scalacRuntimeArtifact + optionalScalaJsSuffix(deps) } // returns "_sjs$sjsVersion" for Scala.js projects or "" otherwise