Skip to content

Commit e0cab9b

Browse files
committed
Rewrote plugin to remove all 0.12.x era idioms
1 parent c7bf969 commit e0cab9b

File tree

1 file changed

+44
-72
lines changed

1 file changed

+44
-72
lines changed
Lines changed: 44 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package scoverage
22

3-
import sbt._
43
import sbt.Keys._
5-
import scoverage.report._
4+
import sbt._
65

76
object ScoverageSbtPlugin extends ScoverageSbtPlugin
87

@@ -21,96 +20,69 @@ class ScoverageSbtPlugin extends sbt.Plugin {
2120

2221
import ScoverageKeys._
2322

24-
lazy val Scoverage: Configuration = config("scoverage") extend Test
23+
lazy val Scoverage: Configuration = config("scoverage") extend Compile
24+
lazy val ScoverageTest: Configuration = config("scoverage-test") extend Scoverage
2525

2626
lazy val instrumentSettings: Seq[Setting[_]] = {
2727
inConfig(Scoverage)(Defaults.compileSettings) ++
28-
inConfig(Scoverage)(Defaults.testSettings) ++
28+
inConfig(ScoverageTest)(Defaults.testSettings) ++
2929
Seq(
30-
//ivyConfigurations ++= Seq(Scoverage.hide, Scoverage.hide),
31-
libraryDependencies in(Scoverage, compile) += {
32-
OrgScoverage % (ArtifactId + "_" + scalaBinaryVersion.value) % ScoverageVersion
30+
ivyConfigurations ++= Seq(Scoverage.hide, ScoverageTest.hide),
31+
libraryDependencies += {
32+
OrgScoverage % (ArtifactId + "_" + scalaBinaryVersion.value) % ScoverageVersion % Scoverage.name
3333
},
34-
34+
sources in Scoverage := (sources in Compile).value,
35+
sourceDirectory in Scoverage := (sourceDirectory in Compile).value,
36+
resourceDirectory in Scoverage := (resourceDirectory in Compile).value,
37+
resourceGenerators in Scoverage := (resourceGenerators in Compile).value,
38+
javacOptions in Scoverage := (javacOptions in Compile).value,
39+
javaOptions in Scoverage := (javaOptions in Compile).value,
40+
41+
minimumCoverage := 0, // default is no minimum
42+
failOnMinimumCoverage := false,
43+
highlighting := false,
3544
excludedPackages in Scoverage := "",
36-
minimumCoverage in Scoverage := 0, // default is no minimum
37-
failOnMinimumCoverage in Scoverage := false,
38-
highlighting in Scoverage := false,
3945

40-
scalacOptions in(Scoverage, compile) ++= {
46+
scalacOptions in Scoverage := {
4147
val target = crossTarget.value
42-
val scoverageDeps = (update in(Scoverage, compile)).value matching configurationFilter(Scoverage.name)
48+
val scoverageDeps = update.value matching configurationFilter(Scoverage.name)
4349
scoverageDeps.find(_.getAbsolutePath.contains(ArtifactId)) match {
4450
case None => throw new Exception(s"Fatal: $ArtifactId not in libraryDependencies")
4551
case Some(classpath) =>
4652
Seq(
4753
"-Xplugin:" + classpath.getAbsolutePath,
48-
"-P:scoverage:excludedPackages:" + Option((excludedPackages in Scoverage).value).getOrElse(""),
54+
"-P:scoverage:excludedPackages:" + Option(excludedPackages.value).getOrElse(""),
4955
"-P:scoverage:dataDir:" + target.getAbsolutePath + "/scoverage-data"
5056
)
5157
}
5258
},
5359

54-
scalacOptions in(Scoverage, compile) ++= (if ((highlighting in Scoverage).value) List("-Yrangepos") else Nil),
55-
56-
test in Scoverage := {
57-
(test in Scoverage).value
58-
streams.value.log.info(s"[scoverage] Waiting for measurement data to sync...")
59-
Thread.sleep(2000) // have noticed some delay in writing, hacky but works
60-
61-
val targetPath = crossTarget.value
62-
63-
val dataDir = targetPath / "/scoverage-data"
64-
val coberturaDir = targetPath / "coverage-report"
65-
val reportDir = targetPath / "scoverage-report"
66-
coberturaDir.mkdirs()
67-
reportDir.mkdirs()
68-
69-
val coverageFile = IOUtils.coverageFile(dataDir)
70-
val measurementFiles = IOUtils.findMeasurementFiles(dataDir)
71-
72-
streams.value.log.info(s"[scoverage] Reading scoverage instrumentation [$coverageFile]")
73-
streams.value.log.info(s"[scoverage] Reading scoverage measurements...")
74-
75-
val coverage = IOUtils.deserialize(coverageFile)
76-
val measurements = IOUtils.invoked(measurementFiles)
77-
coverage.apply(measurements)
78-
79-
streams.value.log
80-
.info(s"[scoverage] Generating Cobertura report [${coberturaDir.getAbsolutePath}/cobertura.xml]")
81-
new CoberturaXmlWriter(baseDirectory.value, coberturaDir).write(coverage)
82-
83-
streams.value.log.info(s"[scoverage] Generating XML report [${reportDir.getAbsolutePath}/scoverage.xml]")
84-
new ScoverageXmlWriter((scalaSource in Compile).value, reportDir, false).write(coverage)
85-
new ScoverageXmlWriter((scalaSource in Compile).value, reportDir, true).write(coverage)
86-
87-
streams.value.log.info(s"[scoverage] Generating HTML report [${reportDir.getAbsolutePath}/index.html]")
88-
new ScoverageHtmlWriter((scalaSource in Compile).value, reportDir).write(coverage)
89-
90-
streams.value.log.info("[scoverage] Reports completed")
91-
92-
// check for default minimum
93-
val min = (minimumCoverage in Scoverage).value
94-
val failOnMin = (failOnMinimumCoverage in Scoverage).value
95-
if (min > 0) {
96-
def is100(d: Double) = Math.abs(100 - d) <= 0.00001
60+
scalacOptions in Scoverage ++= (if (highlighting.value) List("-Yrangepos") else Nil),
61+
62+
sources in ScoverageTest <<= (sources in Test),
63+
sourceDirectory in ScoverageTest <<= (sourceDirectory in Test),
64+
resourceDirectory in ScoverageTest <<= (resourceDirectory in Test),
65+
resourceGenerators in ScoverageTest <<= (resourceGenerators in Test),
66+
unmanagedResources in ScoverageTest <<= (unmanagedResources in Test),
67+
javacOptions in ScoverageTest <<= (javacOptions in Test),
68+
javaOptions in ScoverageTest <<= (javaOptions in Test),
69+
fork in ScoverageTest <<= (fork in Test),
70+
71+
externalDependencyClasspath in Scoverage <<= Classpaths
72+
.concat(externalDependencyClasspath in Scoverage, externalDependencyClasspath in Compile),
73+
externalDependencyClasspath in ScoverageTest <<= Classpaths
74+
.concat(externalDependencyClasspath in ScoverageTest, externalDependencyClasspath in Test),
75+
76+
internalDependencyClasspath in Scoverage <<= (internalDependencyClasspath in Compile),
77+
internalDependencyClasspath in ScoverageTest <<= (internalDependencyClasspath in Test, internalDependencyClasspath in ScoverageTest, classDirectory in Compile) map {
78+
(testDeps, scoverageDeps, oldClassDir) =>
79+
scoverageDeps ++ testDeps.filter(_.data != oldClassDir)
80+
},
9781

98-
if (is100(coverage.statementCoveragePercent)) {
99-
streams.value.log.info(s"[scoverage] 100% Coverage")
100-
} else if (min > coverage.statementCoveragePercent) {
101-
streams.value.log
102-
.error(s"[scoverage] Coverage is below minimum [${coverage.statementCoverageFormatted}% < $min%]")
103-
if (failOnMin)
104-
throw new RuntimeException("Coverage minimum was not reached")
105-
} else {
106-
streams.value.log
107-
.info(s"[scoverage] Coverage is above minimum [${coverage.statementCoverageFormatted}% > $min%]")
108-
}
109-
}
82+
testOptions in ScoverageTest <<= (testOptions in Test),
11083

111-
streams.value.log.info(s"[scoverage] All done. Coverage was [${coverage.statementCoverageFormatted}%]")
112-
()
113-
}
84+
// copy the test task into compile so we can do scoverage:test instead of scoverage-test:test
85+
test in Scoverage <<= (test in ScoverageTest)
11486
)
11587
}
11688
}

0 commit comments

Comments
 (0)