diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index b0e6feea..4a0ac6b4 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -49,6 +49,7 @@ object ScoverageSbtPlugin extends AutoPlugin { */ private def toggleCoverage(status: Boolean): State => State = { state => val extracted = Project.extract(state) + val currentProjRef = extracted.currentRef val newSettings = extracted.structure.allProjectRefs flatMap { proj => Seq( coverageEnabled in proj := status, @@ -60,7 +61,9 @@ object ScoverageSbtPlugin extends AutoPlugin { } ) } - extracted.append(newSettings, state) + val appendSettings = Load.transformSettings(Load.projectScope(currentProjRef), currentProjRef.build, extracted.rootProject, newSettings) + val newSessionSettings = extracted.session.appendRaw(appendSettings) + SessionSettings.reapply(newSessionSettings, state) } private lazy val coverageReport0 = Def.task { diff --git a/src/sbt-test/scoverage/aggregate/test b/src/sbt-test/scoverage/aggregate/test index 09537afb..0d7a6a27 100644 --- a/src/sbt-test/scoverage/aggregate/test +++ b/src/sbt-test/scoverage/aggregate/test @@ -5,6 +5,10 @@ # There should be scoverage-data directory $ exists partA/target/scala-2.10/scoverage-data $ exists partB/target/scala-2.10/scoverage-data +> coverageReport +# There should be scoverage-report directory +$ exists partA/target/scala-2.10/scoverage-report +$ exists partB/target/scala-2.10/scoverage-report > coverageAggregate -# There should be scoverage-data directory +# There should be a root scoverage-report directory $ exists target/scala-2.10/scoverage-report diff --git a/src/sbt-test/scoverage/preserve-set/build.sbt b/src/sbt-test/scoverage/preserve-set/build.sbt new file mode 100644 index 00000000..71a84289 --- /dev/null +++ b/src/sbt-test/scoverage/preserve-set/build.sbt @@ -0,0 +1,14 @@ +import sbt.complete.DefaultParsers._ + +version := "0.1" + +scalaVersion := "2.10.4" + +libraryDependencies += "org.specs2" %% "specs2" % "2.3.13" % "test" + +val checkScalaVersion = inputKey[Unit]("Input task to compare the value of scalaVersion setting with a given input.") +checkScalaVersion := { + val arg: String = (Space ~> StringBasic).parsed + if (scalaVersion.value != arg) error(s"scalaVersion [${scalaVersion.value}] not equal to expected [$arg]") + () +} diff --git a/src/sbt-test/scoverage/preserve-set/project/plugins.sbt b/src/sbt-test/scoverage/preserve-set/project/plugins.sbt new file mode 100644 index 00000000..0b154c5c --- /dev/null +++ b/src/sbt-test/scoverage/preserve-set/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/preserve-set/src/main/scala/PreserveSet.scala b/src/sbt-test/scoverage/preserve-set/src/main/scala/PreserveSet.scala new file mode 100644 index 00000000..07e53033 --- /dev/null +++ b/src/sbt-test/scoverage/preserve-set/src/main/scala/PreserveSet.scala @@ -0,0 +1,6 @@ +object PreserveSet { + + def sum(num1: Int, num2: Int) = { + num1 + num2 + } +} diff --git a/src/sbt-test/scoverage/preserve-set/src/test/scala/PreserveSetSpec.scala b/src/sbt-test/scoverage/preserve-set/src/test/scala/PreserveSetSpec.scala new file mode 100644 index 00000000..a7722e39 --- /dev/null +++ b/src/sbt-test/scoverage/preserve-set/src/test/scala/PreserveSetSpec.scala @@ -0,0 +1,10 @@ +import org.specs2.mutable._ + +class PreserveSetSpec extends Specification { + + "PreserveSet" should { + "sum two numbers" in { + PreserveSet.sum(1, 2) mustEqual 3 + } + } +} diff --git a/src/sbt-test/scoverage/preserve-set/test b/src/sbt-test/scoverage/preserve-set/test new file mode 100644 index 00000000..ddde531b --- /dev/null +++ b/src/sbt-test/scoverage/preserve-set/test @@ -0,0 +1,11 @@ +# check scalaVersion setting +> checkScalaVersion "2.10.4" +# override scalaVersion setting +> set scalaVersion := {"2.10.5"} +> checkScalaVersion "2.10.5" +# activate coverage - override should still be present +> coverage +> checkScalaVersion "2.10.5" +# turn off coverage - override should still be present +> coverageOff +> checkScalaVersion "2.10.5"