@@ -10,7 +10,7 @@ import scoverage.reporter.CoverageAggregator
10
10
import scoverage .reporter .IOUtils
11
11
import scoverage .reporter .ScoverageHtmlWriter
12
12
import scoverage .reporter .ScoverageXmlWriter
13
- import scoverage .reporter . Deserializer
13
+ import scoverage .serialize . Serializer
14
14
15
15
import java .time .Instant
16
16
@@ -21,6 +21,7 @@ object ScoverageSbtPlugin extends AutoPlugin {
21
21
val scalacPluginArtifact = " scalac-scoverage-plugin"
22
22
val scalacDomainArtifact = " scalac-scoverage-domain"
23
23
val scalacReporterArtifact = " scalac-scoverage-reporter"
24
+ val scalacSerializerArtifact = " scalac-scoverage-serializer"
24
25
val defaultScoverageVersion = BuildInfo .scoverageVersion
25
26
val autoImport = ScoverageKeys
26
27
lazy val ScoveragePluginConfig = config(" scoveragePlugin" ).hide
@@ -81,11 +82,11 @@ object ScoverageSbtPlugin extends AutoPlugin {
81
82
82
83
private lazy val coverageSettings = Seq (
83
84
libraryDependencies ++= {
84
- // TODO check will need to go here for Scala 3 to not add everthing
85
85
if (coverageEnabled.value && isScala2(scalaVersion.value)) {
86
86
Seq (
87
87
orgScoverage %% scalacDomainArtifact % coverageScalacPluginVersion.value,
88
88
orgScoverage %% scalacReporterArtifact % coverageScalacPluginVersion.value,
89
+ orgScoverage %% scalacSerializerArtifact % coverageScalacPluginVersion.value,
89
90
// We only add for "compile" because of macros. This setting could be optimed to just "test" if the handling
90
91
// of macro coverage was improved.
91
92
orgScoverage %% (scalacRuntime(
@@ -115,20 +116,24 @@ object ScoverageSbtPlugin extends AutoPlugin {
115
116
// includes everything it needs for the compiler plugin phase:
116
117
// 1. the plugin jar
117
118
// 2. the domain jar
119
+ // 3. the serializer jar
118
120
// NOTE: Even though you'd think that since plugin relies on domain
119
121
// it'd just auto include it... it doesn't.
120
122
// https://github.com/sbt/sbt/issues/2255
121
123
val pluginPaths = scoverageDeps.collect {
122
124
case path
123
125
if path.getAbsolutePath().contains(scalacPluginArtifact) || path
124
126
.getAbsolutePath()
125
- .contains(scalacDomainArtifact) =>
127
+ .contains(scalacDomainArtifact) ||
128
+ path.getAbsolutePath().contains(scalacSerializerArtifact) =>
126
129
path.getAbsolutePath()
127
130
}
128
131
129
- if (pluginPaths.size != 2 )
132
+ // NOTE: A little hacky, but make sure we are matching on the exact
133
+ // number of deps that we expect to collect up above.
134
+ if (pluginPaths.size != 3 )
130
135
throw new Exception (
131
- s " Fatal: Not finding either $scalacDomainArtifact or $scalacPluginArtifact in libraryDependencies. "
136
+ s " Fatal: Not finding either $scalacDomainArtifact or $scalacPluginArtifact or $scalacSerializerArtifact in libraryDependencies."
132
137
)
133
138
134
139
Seq (
@@ -379,13 +384,13 @@ object ScoverageSbtPlugin extends AutoPlugin {
379
384
): Option [Coverage ] = {
380
385
381
386
val dataDir = crossTarget / " /scoverage-data"
382
- val coverageFile = Deserializer .coverageFile(dataDir)
387
+ val coverageFile = Serializer .coverageFile(dataDir)
383
388
384
389
log.info(s " Reading scoverage instrumentation [ $coverageFile] " )
385
390
386
391
if (coverageFile.exists) {
387
392
388
- val coverage = Deserializer .deserialize(
393
+ val coverage = Serializer .deserialize(
389
394
coverageFile,
390
395
sourceRoot
391
396
)
0 commit comments