Skip to content

Commit 49a21ed

Browse files
committed
Fixed build for scoverage scala plugin refactorings
1 parent ad236f7 commit 49a21ed

File tree

4 files changed

+115
-110
lines changed

4 files changed

+115
-110
lines changed

Diff for: .gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
target
22
.idea
33
*.iml
4+
.credentials
5+
credentials.sbt

Diff for: build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name := "sbt-scoverage"
22

33
organization := "com.sksamuel.scoverage"
44

5-
version := "0.92.0"
5+
version := "0.92.0-SNAPSHOT"
66

77
scalaVersion := "2.10.3"
88

@@ -11,7 +11,7 @@ sbtPlugin := true
1111
resolvers += "Local Maven Repository" at "file://" + Path.userHome.absolutePath + "/.m2/repository"
1212

1313
libraryDependencies ++= Seq(
14-
"com.sksamuel.scoverage" %% "scalac-scoverage-plugin" % "0.90.0"
14+
"com.sksamuel.scoverage" %% "scalac-scoverage-plugin" % "0.92.0-SNAPSHOT"
1515
)
1616

1717
scalacOptions := Seq("-unchecked", "-deprecation", "-feature", "-encoding", "utf8")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package com.sksamuel.scoverage
2+
3+
import sbt._
4+
import sbt.Keys._
5+
import sbt.File
6+
import scoverage.{IOUtils, Env}
7+
import scoverage.report.{ScoverageXmlWriter, CoberturaXmlWriter}
8+
9+
object ScoverageSbtPlugin extends Plugin {
10+
11+
val scoverageReportDir = SettingKey[File]("scoverage-report-dir")
12+
13+
lazy val scoverage = config("scoverage")
14+
lazy val scoverageTest = config("scoverage-test") extend scoverage
15+
16+
lazy val instrumentSettings = {
17+
inConfig(scoverage)(Defaults.compileSettings) ++
18+
inConfig(scoverageTest)(Defaults.testSettings) ++
19+
Seq(
20+
scoverageReportDir <<= crossTarget / "coverage-report",
21+
22+
ivyConfigurations ++= Seq(scoverage, scoverageTest),
23+
24+
resolvers += Resolver.url("local-ivy",
25+
new URL("file://" + Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns),
26+
27+
libraryDependencies +=
28+
"com.sksamuel.scoverage" %% "scalac-scoverage-plugin" % "0.92.0-SNAPSHOT" % scoverage.name,
29+
30+
sources in scoverage <<= (sources in Compile),
31+
sourceDirectory in scoverage <<= (sourceDirectory in Compile),
32+
33+
scalacOptions in scoverage <++= (name in scoverage, baseDirectory in scoverage, update) map {
34+
(n, b, report) =>
35+
val scoverageDeps = report matching configurationFilter("scoverage")
36+
scoverageDeps.find(_.getAbsolutePath.contains("scalac-scoverage-plugin")) match {
37+
case None => throw new Exception("Fatal: scalac-scoverage-plugin not in libraryDependencies")
38+
case Some(classpath) =>
39+
Seq(
40+
"-Xplugin:" + classpath.getAbsolutePath,
41+
"-Yrangepos"
42+
)
43+
}
44+
},
45+
46+
sources in scoverageTest <<= (sources in Test),
47+
sourceDirectory in scoverageTest <<= (sourceDirectory in Test),
48+
unmanagedResources in scoverageTest <<= (unmanagedResources in Test),
49+
50+
resourceDirectory in scoverageTest <<= (resourceDirectory in Compile),
51+
52+
externalDependencyClasspath in scoverage <<= Classpaths
53+
.concat(externalDependencyClasspath in scoverage, externalDependencyClasspath in Compile),
54+
externalDependencyClasspath in scoverageTest <<= Classpaths
55+
.concat(externalDependencyClasspath in scoverageTest, externalDependencyClasspath in Test),
56+
57+
internalDependencyClasspath in scoverage <<= (internalDependencyClasspath in Compile),
58+
internalDependencyClasspath in scoverageTest <<= (internalDependencyClasspath in Test, internalDependencyClasspath in scoverageTest, classDirectory in Compile) map {
59+
(testDeps, scoverageDeps, oldClassDir) =>
60+
scoverageDeps ++ testDeps.filter(_.data != oldClassDir)
61+
},
62+
63+
testOptions in scoverageTest <+= testsCleanup,
64+
65+
// make scoverage config the same as scoverageTest config
66+
test in scoverage <<= (test in scoverageTest)
67+
)
68+
}
69+
70+
/** Generate hook that is invoked after each tests execution. */
71+
def testsCleanup = {
72+
(target in scoverageTest,
73+
definedTests in scoverageTest,
74+
streams) map {
75+
(target,
76+
definedTests,
77+
streams) =>
78+
if (definedTests.isEmpty) {
79+
Tests.Cleanup {
80+
() => {}
81+
}
82+
} else {
83+
Tests.Cleanup {
84+
() =>
85+
86+
println(target)
87+
println(Env.coverageFile)
88+
println(Env.measurementFile)
89+
90+
val coverage = IOUtils.deserialize(getClass.getClassLoader, Env.coverageFile)
91+
val measurements = IOUtils.invoked(Env.measurementFile)
92+
coverage.apply(measurements)
93+
94+
val targetDirectory = new File("target/coverage-report")
95+
targetDirectory.mkdirs()
96+
97+
println("Generating Cobertura XML report...")
98+
CoberturaXmlWriter.write(coverage, targetDirectory)
99+
100+
println("Generating Scoverage XML report...")
101+
ScoverageXmlWriter.write(coverage, targetDirectory)
102+
103+
println("Generating Scoverage HTML report...")
104+
ScoverageXmlWriter.write(coverage, targetDirectory)
105+
106+
()
107+
}
108+
}
109+
}
110+
}
111+
}

Diff for: src/main/scala/org/scalescc/sbt/ScootSbtPlugin.scala

-108
This file was deleted.

0 commit comments

Comments
 (0)