@@ -10,7 +10,7 @@ import scoverage.reporter.CoverageAggregator
1010import scoverage .reporter .IOUtils
1111import scoverage .reporter .ScoverageHtmlWriter
1212import scoverage .reporter .ScoverageXmlWriter
13- import scoverage .reporter . Deserializer
13+ import scoverage .serialize . Serializer
1414
1515import java .time .Instant
1616
@@ -21,6 +21,7 @@ object ScoverageSbtPlugin extends AutoPlugin {
2121 val scalacPluginArtifact = " scalac-scoverage-plugin"
2222 val scalacDomainArtifact = " scalac-scoverage-domain"
2323 val scalacReporterArtifact = " scalac-scoverage-reporter"
24+ val scalacSerializerArtifact = " scalac-scoverage-serializer"
2425 val defaultScoverageVersion = BuildInfo .scoverageVersion
2526 val autoImport = ScoverageKeys
2627 lazy val ScoveragePluginConfig = config(" scoveragePlugin" ).hide
@@ -81,11 +82,11 @@ object ScoverageSbtPlugin extends AutoPlugin {
8182
8283 private lazy val coverageSettings = Seq (
8384 libraryDependencies ++= {
84- // TODO check will need to go here for Scala 3 to not add everthing
8585 if (coverageEnabled.value && isScala2(scalaVersion.value)) {
8686 Seq (
8787 orgScoverage %% scalacDomainArtifact % coverageScalacPluginVersion.value,
8888 orgScoverage %% scalacReporterArtifact % coverageScalacPluginVersion.value,
89+ orgScoverage %% scalacSerializerArtifact % coverageScalacPluginVersion.value,
8990 // We only add for "compile" because of macros. This setting could be optimed to just "test" if the handling
9091 // of macro coverage was improved.
9192 orgScoverage %% (scalacRuntime(
@@ -115,20 +116,24 @@ object ScoverageSbtPlugin extends AutoPlugin {
115116 // includes everything it needs for the compiler plugin phase:
116117 // 1. the plugin jar
117118 // 2. the domain jar
119+ // 3. the serializer jar
118120 // NOTE: Even though you'd think that since plugin relies on domain
119121 // it'd just auto include it... it doesn't.
120122 // https://github.com/sbt/sbt/issues/2255
121123 val pluginPaths = scoverageDeps.collect {
122124 case path
123125 if path.getAbsolutePath().contains(scalacPluginArtifact) || path
124126 .getAbsolutePath()
125- .contains(scalacDomainArtifact) =>
127+ .contains(scalacDomainArtifact) ||
128+ path.getAbsolutePath().contains(scalacSerializerArtifact) =>
126129 path.getAbsolutePath()
127130 }
128131
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 )
130135 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."
132137 )
133138
134139 Seq (
@@ -379,13 +384,13 @@ object ScoverageSbtPlugin extends AutoPlugin {
379384 ): Option [Coverage ] = {
380385
381386 val dataDir = crossTarget / " /scoverage-data"
382- val coverageFile = Deserializer .coverageFile(dataDir)
387+ val coverageFile = Serializer .coverageFile(dataDir)
383388
384389 log.info(s " Reading scoverage instrumentation [ $coverageFile] " )
385390
386391 if (coverageFile.exists) {
387392
388- val coverage = Deserializer .deserialize(
393+ val coverage = Serializer .deserialize(
389394 coverageFile,
390395 sourceRoot
391396 )
0 commit comments