Skip to content

Commit f2a4104

Browse files
committed
Reverting previous ballsup
1 parent 537ea0d commit f2a4104

File tree

1 file changed

+88
-99
lines changed

1 file changed

+88
-99
lines changed

Diff for: src/main/scala/scoverage/ScoverageSbtPlugin.scala

+88-99
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,32 @@ class ScoverageSbtPlugin extends sbt.Plugin {
1313
val ScoverageVersion = "0.99.7"
1414

1515
object ScoverageKeys {
16-
lazy val excludedPackages = SettingKey[String]("scoverage-excluded-packages")
17-
lazy val minimumCoverage = SettingKey[Double]("scoverage-minimum-coverage")
18-
lazy val failOnMinimumCoverage = SettingKey[Boolean]("scoverage-fail-on-minimum-coverage")
19-
lazy val highlighting = SettingKey[Boolean]("scoverage-highlighting", "enables range positioning for highlighting")
20-
lazy val scoverageReport = taskKey[Unit]("scoverage-report")
21-
lazy val scoverageMultiReport = taskKey[Unit]("scoverage-multireport")
16+
val excludedPackages = SettingKey[String]("scoverage-excluded-packages")
17+
val minimumCoverage = SettingKey[Double]("scoverage-minimum-coverage")
18+
val failOnMinimumCoverage = SettingKey[Boolean]("scoverage-fail-on-minimum-coverage")
19+
val highlighting = SettingKey[Boolean]("scoverage-highlighting", "enables range positioning for highlighting")
2220
}
2321

2422
import ScoverageKeys._
2523

2624
lazy val ScoverageCompile: Configuration = config("scoverage")
2725
lazy val ScoverageTest: Configuration = config("scoverage-test") extend ScoverageCompile
28-
lazy val ScoverageITest: Configuration = config("scoverage-itest") extend ScoverageTest
2926

3027
lazy val instrumentSettings: Seq[Setting[_]] = {
3128
inConfig(ScoverageCompile)(Defaults.compileSettings) ++
3229
inConfig(ScoverageTest)(Defaults.testSettings) ++
33-
inConfig(ScoverageITest)(Defaults.itSettings) ++
3430
Seq(
3531
ivyConfigurations ++= Seq(ScoverageCompile.hide, ScoverageTest.hide),
3632
libraryDependencies += {
3733
OrgScoverage % (ScalacArtifact + "_" + scalaBinaryVersion.value) % ScoverageVersion % ScoverageCompile.name
3834
},
35+
sources in ScoverageCompile <<= (sources in Compile),
36+
sourceDirectory in ScoverageCompile <<= (sourceDirectory in Compile),
37+
resourceDirectory in ScoverageCompile <<= (resourceDirectory in Compile),
38+
resourceGenerators in ScoverageCompile <<= (resourceGenerators in Compile),
39+
excludedPackages in ScoverageCompile := "",
40+
javacOptions in ScoverageCompile <<= (javacOptions in Compile),
41+
javaOptions in ScoverageCompile <<= (javaOptions in Compile),
3942

4043
minimumCoverage := 0, // default is no minimum
4144
failOnMinimumCoverage := false,
@@ -55,120 +58,106 @@ class ScoverageSbtPlugin extends sbt.Plugin {
5558
}
5659
},
5760

58-
scoverageReport := {
59-
val cross = crossTarget.value
60-
val compileSourceDirectory = (scalaSource in Compile).value
61-
val baseDir = (baseDirectory in Compile).value
62-
val log = sbt.Keys.streams.value.log
63-
64-
log.info(s"[scoverage] Waiting for measurement data to sync...")
65-
Thread.sleep(3000) // have noticed some delay in writing, hacky but works
66-
67-
val dataDir = cross / "/scoverage-data"
68-
val coberturaDir = cross / "coverage-report"
69-
val scoverageDir = cross / "scoverage-report"
70-
coberturaDir.mkdirs()
71-
scoverageDir.mkdirs()
72-
73-
val coverageFile = IOUtils.coverageFile(dataDir)
74-
val measurementFiles = IOUtils.findMeasurementFiles(dataDir)
75-
76-
log.info(s"[scoverage] Reading scoverage instrumentation [$coverageFile]")
77-
log.info(s"[scoverage] Reading scoverage measurements...")
78-
79-
val coverage = IOUtils.deserialize(coverageFile)
80-
val measurements = IOUtils.invoked(measurementFiles)
81-
coverage.apply(measurements)
82-
83-
log.info(s"[scoverage] Generating Cobertura report [${coberturaDir.getAbsolutePath}/cobertura.xml]")
84-
new CoberturaXmlWriter(baseDir, coberturaDir).write(coverage)
85-
86-
log.info(s"[scoverage] Generating XML report [${scoverageDir.getAbsolutePath}/scoverage.xml]")
87-
new ScoverageXmlWriter(compileSourceDirectory, scoverageDir, false).write(coverage)
88-
new ScoverageXmlWriter(compileSourceDirectory, scoverageDir, true).write(coverage)
89-
90-
log.info(s"[scoverage] Generating HTML report [${scoverageDir.getAbsolutePath}/index.html]")
91-
new ScoverageHtmlWriter(compileSourceDirectory, scoverageDir).write(coverage)
92-
93-
log.info("[scoverage] Reports completed")
94-
val min = minimumCoverage.value
95-
96-
// check for default minimum
97-
if (min > 0) {
98-
if (min > coverage.statementCoveragePercent) {
99-
log.error(s"[scoverage] Coverage is below minimum [${coverage.statementCoverageFormatted}% < $min%]")
100-
if (failOnMinimumCoverage.value) {
101-
// todo better way to fail an SBT build ?
102-
throw new RuntimeException("Coverage minimum was not reached. Failing build.")
103-
}
104-
} else {
105-
log.info(s"[scoverage] Coverage is above minimum [${coverage.statementCoverageFormatted}% > $min%]")
106-
}
107-
}
108-
109-
log.info(s"[scoverage] All done. Coverage was [${coverage.statementCoverageFormatted}%]")
110-
},
111-
112-
scoverageMultiReport := {
113-
114-
},
115-
11661
scalacOptions in ScoverageCompile ++= (if (highlighting.value) List("-Yrangepos") else Nil),
11762

118-
sources in ScoverageCompile <<= (sources in Compile),
119-
sourceDirectory in ScoverageCompile <<= (sourceDirectory in Compile),
120-
resourceDirectory in ScoverageCompile <<= (resourceDirectory in Compile),
121-
resourceGenerators in ScoverageCompile <<= (resourceGenerators in Compile),
122-
unmanagedResources in ScoverageCompile <<= (unmanagedResources in Compile),
123-
javaOptions in ScoverageCompile <<= (javaOptions in Compile),
124-
javacOptions in ScoverageCompile <<= (javacOptions in Compile),
125-
fork in ScoverageCompile <<= (fork in Compile),
126-
excludedPackages in ScoverageCompile := "",
127-
12863
sources in ScoverageTest <<= (sources in Test),
12964
sourceDirectory in ScoverageTest <<= (sourceDirectory in Test),
13065
resourceDirectory in ScoverageTest <<= (resourceDirectory in Test),
13166
resourceGenerators in ScoverageTest <<= (resourceGenerators in Test),
13267
unmanagedResources in ScoverageTest <<= (unmanagedResources in Test),
133-
javaOptions in ScoverageTest <<= (javaOptions in Test),
13468
javacOptions in ScoverageTest <<= (javacOptions in Test),
69+
javaOptions in ScoverageTest <<= (javaOptions in Test),
13570
fork in ScoverageTest <<= (fork in Test),
136-
testOptions in ScoverageTest <<= (testOptions in Test),
137-
138-
sources in ScoverageITest <<= (sources in Test),
139-
sourceDirectory in ScoverageITest <<= (sourceDirectory in IntegrationTest),
140-
resourceDirectory in ScoverageITest <<= (resourceDirectory in IntegrationTest),
141-
resourceGenerators in ScoverageITest <<= (resourceGenerators in IntegrationTest),
142-
unmanagedResources in ScoverageITest <<= (unmanagedResources in IntegrationTest),
143-
javaOptions in ScoverageITest <<= (javaOptions in IntegrationTest),
144-
javacOptions in ScoverageITest <<= (javacOptions in IntegrationTest),
145-
fork in ScoverageITest <<= (fork in IntegrationTest),
146-
testOptions in ScoverageITest <<= (testOptions in IntegrationTest),
14771

14872
externalDependencyClasspath in ScoverageCompile <<= Classpaths
14973
.concat(externalDependencyClasspath in ScoverageCompile, externalDependencyClasspath in Compile),
15074
externalDependencyClasspath in ScoverageTest <<= Classpaths
15175
.concat(externalDependencyClasspath in ScoverageTest, externalDependencyClasspath in Test),
152-
externalDependencyClasspath in ScoverageITest <<= Classpaths
153-
.concat(externalDependencyClasspath in ScoverageTest, externalDependencyClasspath in IntegrationTest),
15476

15577
internalDependencyClasspath in ScoverageCompile <<= (internalDependencyClasspath in Compile),
15678
internalDependencyClasspath in ScoverageTest <<= (internalDependencyClasspath in Test, internalDependencyClasspath in ScoverageTest, classDirectory in Compile) map {
15779
(testDeps, scoverageDeps, oldClassDir) =>
15880
scoverageDeps ++ testDeps.filter(_.data != oldClassDir)
15981
},
16082

161-
test in ScoverageTest := {
162-
(test in Test).value
163-
scoverageReport.value
164-
},
165-
test in ScoverageITest := {
166-
(test in IntegrationTest).value
167-
scoverageReport.value
168-
},
83+
testOptions in ScoverageTest <<= (testOptions in Test),
84+
testOptions in ScoverageTest <+= testsCleanup,
16985

170-
// copy the test task into compile so we can do scoverage:test instead of scoverage-test:test etc
86+
// copy the test task into compile so we can do scoverage:test instead of scoverage-test:test
17187
test in ScoverageCompile <<= (test in ScoverageTest)
17288
)
17389
}
90+
91+
/** Generate hook that is invoked after the tests have executed. */
92+
def testsCleanup = {
93+
(crossTarget in ScoverageTest,
94+
baseDirectory in Compile,
95+
scalaSource in Compile,
96+
definedTests in ScoverageTest,
97+
minimumCoverage in ScoverageTest,
98+
failOnMinimumCoverage in ScoverageTest,
99+
streams in Global) map {
100+
(crossTarget,
101+
baseDirectory,
102+
compileSourceDirectory,
103+
definedTests,
104+
min,
105+
failOnMin,
106+
s) =>
107+
if (definedTests.isEmpty) {
108+
Tests.Cleanup {
109+
() => {}
110+
}
111+
} else {
112+
Tests.Cleanup {
113+
() =>
114+
115+
s.log.info(s"[scoverage] Waiting for measurement data to sync...")
116+
Thread.sleep(2000) // have noticed some delay in writing, hacky but works
117+
118+
val dataDir = crossTarget / "/scoverage-data"
119+
val coberturaDir = crossTarget / "coverage-report"
120+
val reportDir = crossTarget / "scoverage-report"
121+
coberturaDir.mkdirs()
122+
reportDir.mkdirs()
123+
124+
val coverageFile = IOUtils.coverageFile(dataDir)
125+
val measurementFiles = IOUtils.findMeasurementFiles(dataDir)
126+
127+
s.log.info(s"[scoverage] Reading scoverage instrumentation [$coverageFile]")
128+
s.log.info(s"[scoverage] Reading scoverage measurements...")
129+
130+
val coverage = IOUtils.deserialize(coverageFile)
131+
val measurements = IOUtils.invoked(measurementFiles)
132+
coverage.apply(measurements)
133+
134+
s.log.info(s"[scoverage] Generating Cobertura report [${coberturaDir.getAbsolutePath}/cobertura.xml]")
135+
new CoberturaXmlWriter(baseDirectory, coberturaDir).write(coverage)
136+
137+
s.log.info(s"[scoverage] Generating XML report [${reportDir.getAbsolutePath}/scoverage.xml]")
138+
new ScoverageXmlWriter(compileSourceDirectory, reportDir, false).write(coverage)
139+
new ScoverageXmlWriter(compileSourceDirectory, reportDir, true).write(coverage)
140+
141+
s.log.info(s"[scoverage] Generating HTML report [${reportDir.getAbsolutePath}/index.html]")
142+
new ScoverageHtmlWriter(compileSourceDirectory, reportDir).write(coverage)
143+
144+
s.log.info("[scoverage] Reports completed")
145+
146+
// check for default minimum
147+
if (min > 0) {
148+
if (min > coverage.statementCoveragePercent) {
149+
s.log.error(s"[scoverage] Coverage is below minimum [${coverage.statementCoverageFormatted}% < $min%]")
150+
if (failOnMin)
151+
throw new RuntimeException("Coverage minimum was not reached")
152+
} else {
153+
s.log.info(s"[scoverage] Coverage is above minimum [${coverage.statementCoverageFormatted}% > $min%]")
154+
}
155+
}
156+
157+
s.log.info(s"[scoverage] All done. Coverage was [${coverage.statementCoverageFormatted}%]")
158+
()
159+
}
160+
}
161+
}
162+
}
174163
}

0 commit comments

Comments
 (0)