diff --git a/src/main/scala/scoverage/ScoverageKeys.scala b/src/main/scala/scoverage/ScoverageKeys.scala index 71466182..52b0b262 100644 --- a/src/main/scala/scoverage/ScoverageKeys.scala +++ b/src/main/scala/scoverage/ScoverageKeys.scala @@ -17,4 +17,5 @@ object ScoverageKeys { lazy val coverageOutputDebug = settingKey[Boolean]("turn on the debug report") lazy val coverageCleanSubprojectFiles = settingKey[Boolean]("removes subproject data after an aggregation") lazy val coverageOutputTeamCity = settingKey[Boolean]("turn on teamcity reporting") + lazy val coverageScalacPluginVersion = settingKey[String]("version of scalac-scoverage-plugin to use") } diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index a61043f9..3176df7c 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -30,10 +30,11 @@ object ScoverageSbtPlugin extends AutoPlugin { coverageReport <<= coverageReport0, coverageAggregate <<= coverageAggregate0, ivyConfigurations := ivyConfigurations.value :+ ScoveragePluginConfig, + coverageScalacPluginVersion := DefaultScoverageVersion, libraryDependencies ++= { if (coverageEnabled.value) Seq( - OrgScoverage % (ScalacRuntimeArtifact + "_" + scalaBinaryVersion.value) % DefaultScoverageVersion, - OrgScoverage % (ScalacPluginArtifact + "_" + scalaBinaryVersion.value) % DefaultScoverageVersion % "scoveragePlugin->default(compile)" + OrgScoverage % (ScalacRuntimeArtifact + "_" + scalaBinaryVersion.value) % coverageScalacPluginVersion.value, + OrgScoverage % (ScalacPluginArtifact + "_" + scalaBinaryVersion.value) % coverageScalacPluginVersion.value % "scoveragePlugin->default(compile)" ) else Nil }, scalacOptions in(Compile, compile) ++= scoverageScalacOptions.value, diff --git a/src/sbt-test/scoverage/scalac-plugin-version/build.sbt b/src/sbt-test/scoverage/scalac-plugin-version/build.sbt new file mode 100644 index 00000000..cb170e9d --- /dev/null +++ b/src/sbt-test/scoverage/scalac-plugin-version/build.sbt @@ -0,0 +1,11 @@ +lazy val root = (project in file(".")).settings( + coverageEnabled := true, + coverageScalacPluginVersion := "1.1.0" +) +TaskKey[Unit]("check") := { + assert( + libraryDependencies.value + .filter(module => + module.organization == "org.scoverage" && module.revision == "1.1.0") + .size == 2) +} diff --git a/src/sbt-test/scoverage/scalac-plugin-version/project/plugins.sbt b/src/sbt-test/scoverage/scalac-plugin-version/project/plugins.sbt new file mode 100644 index 00000000..0b154c5c --- /dev/null +++ b/src/sbt-test/scoverage/scalac-plugin-version/project/plugins.sbt @@ -0,0 +1,15 @@ +// The Typesafe repository +resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" + +//scoverage needs this +resolvers += Classpaths.sbtPluginReleases + +{ + val pluginVersion = System.getProperty("plugin.version") + if(pluginVersion == null) + throw new RuntimeException("""|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) + else addSbtPlugin("org.scoverage" %% "sbt-scoverage" % pluginVersion) +} + + diff --git a/src/sbt-test/scoverage/scalac-plugin-version/test b/src/sbt-test/scoverage/scalac-plugin-version/test new file mode 100644 index 00000000..dfbc3cb7 --- /dev/null +++ b/src/sbt-test/scoverage/scalac-plugin-version/test @@ -0,0 +1,2 @@ +# assert coverageScalacPluginVersion is taken into account when generating libraryDependencies +> check \ No newline at end of file