Skip to content

Commit 0bf34fd

Browse files
authored
Merge pull request #186 from lustefaniak/coverage_preserves_settings_overrides
Avoid removing settings overrides done during the session when executing toggleCoverage
2 parents 45886c1 + 99a067b commit 0bf34fd

File tree

6 files changed

+72
-2
lines changed

6 files changed

+72
-2
lines changed

src/main/scala/scoverage/ScoverageSbtPlugin.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,13 @@ object ScoverageSbtPlugin extends AutoPlugin {
5858
*/
5959
private def toggleCoverage(status: Boolean): State => State = { state =>
6060
val extracted = Project.extract(state)
61+
val currentProjRef = extracted.currentRef
6162
val newSettings = extracted.structure.allProjectRefs.flatMap(proj =>
62-
Seq(coverageEnabled in proj := status))
63-
extracted.append(newSettings, state)
63+
Seq(coverageEnabled in proj := status)
64+
)
65+
val appendSettings = Load.transformSettings(Load.projectScope(currentProjRef), currentProjRef.build, extracted.rootProject, newSettings)
66+
val newSessionSettings = extracted.session.appendRaw(appendSettings)
67+
SessionSettings.reapply(newSessionSettings, state)
6468
}
6569

6670
// returns "_sjs$sjsVersion" for Scala.js projects or "" otherwise
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import sbt.complete.DefaultParsers._
2+
3+
version := "0.1"
4+
5+
scalaVersion := "2.10.4"
6+
7+
libraryDependencies += "org.specs2" %% "specs2" % "2.3.13" % "test"
8+
9+
val checkScalaVersion = inputKey[Unit]("Input task to compare the value of scalaVersion setting with a given input.")
10+
checkScalaVersion := {
11+
val arg: String = (Space ~> StringBasic).parsed
12+
if (scalaVersion.value != arg) error(s"scalaVersion [${scalaVersion.value}] not equal to expected [$arg]")
13+
()
14+
}
15+
16+
resolvers ++= {
17+
if (sys.props.get("plugin.version").map(_.endsWith("-SNAPSHOT")).getOrElse(false)) Seq(Resolver.sonatypeRepo("snapshots"))
18+
else Seq.empty
19+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// The Typesafe repository
2+
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
3+
4+
//scoverage needs this
5+
resolvers += Classpaths.sbtPluginReleases
6+
7+
val pluginVersion = sys.props.getOrElse(
8+
"plugin.version",
9+
throw new RuntimeException(
10+
"""|The system property 'plugin.version' is not defined.
11+
|Specify this property using the scriptedLaunchOpts -D.""".stripMargin))
12+
13+
addSbtPlugin("org.scoverage" %% "sbt-scoverage" % pluginVersion)
14+
15+
resolvers ++= {
16+
if (pluginVersion.endsWith("-SNAPSHOT"))
17+
Seq(Resolver.sonatypeRepo("snapshots"))
18+
else
19+
Seq.empty
20+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
object PreserveSet {
2+
3+
def sum(num1: Int, num2: Int) = {
4+
num1 + num2
5+
}
6+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import org.specs2.mutable._
2+
3+
class PreserveSetSpec extends Specification {
4+
5+
"PreserveSet" should {
6+
"sum two numbers" in {
7+
PreserveSet.sum(1, 2) mustEqual 3
8+
}
9+
}
10+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# check scalaVersion setting
2+
> checkScalaVersion "2.10.4"
3+
# override scalaVersion setting
4+
> set scalaVersion := {"2.10.5"}
5+
> checkScalaVersion "2.10.5"
6+
# activate coverage - override should still be present
7+
> coverage
8+
> checkScalaVersion "2.10.5"
9+
# turn off coverage - override should still be present
10+
> coverageOff
11+
> checkScalaVersion "2.10.5"

0 commit comments

Comments
 (0)