Skip to content

Commit 47cd43a

Browse files
committed
Added tests for XML Reader
1 parent 3874e45 commit 47cd43a

File tree

5 files changed

+69
-6
lines changed

5 files changed

+69
-6
lines changed

scalac-scoverage-plugin/src/main/scala/scoverage/Constants.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ object Constants {
55
val CoverageFileName = "scoverage.coverage.xml"
66
// the final scoverage report
77
val XMLReportFilename = "scoverage.xml"
8+
val XMLReportFilenameWithDebug = "scoverage-debug.xml"
89
// directory that contains all the measurement data but not reports
910
val DataDir = "scoverage-data"
1011
// the prefix the measurement files have

scalac-scoverage-plugin/src/main/scala/scoverage/IOUtils.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ object IOUtils {
2727
path.drop(index + 1)
2828
}
2929

30+
def reportFile(outputDir: File, debug: Boolean = false): File = debug match {
31+
case true => new File(outputDir, Constants.XMLReportFilenameWithDebug)
32+
case false => new File(outputDir, Constants.XMLReportFilename)
33+
}
34+
3035
def clean(dataDir: File): Unit = findMeasurementFiles(dataDir).foreach(_.delete)
3136
def clean(dataDir: String): Unit = clean(new File(dataDir))
3237

scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageXmlReader.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ object ScoverageXmlReader {
1616

1717
var id = 0
1818
val coverage = Coverage()
19-
(xml \ "statement") foreach { node => {
19+
(xml \\ "statement") foreach { node => {
2020

2121
val source = node \ "@source"
2222
val pkg = node \ "@package"

scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageXmlWriter.scala

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,11 @@ import scala.xml.{Node, PrettyPrinter}
1010
class ScoverageXmlWriter(sourceDir: File, outputDir: File, debug: Boolean) {
1111

1212
def write(coverage: Coverage): Unit = {
13-
val file = debug match {
14-
case true => new File(outputDir.getAbsolutePath + "/scoverage-debug.xml")
15-
case false => new File(outputDir.getAbsolutePath + "/" + Constants.XMLReportFilename)
16-
}
13+
val file = IOUtils.reportFile(outputDir, debug)
1714
IOUtils.writeToFile(file, new PrettyPrinter(120, 4).format(xml(coverage)))
1815
}
1916

20-
def xml(coverage: Coverage): Node = {
17+
private def xml(coverage: Coverage): Node = {
2118
<scoverage statement-count={coverage.statementCount.toString}
2219
statements-invoked={coverage.invokedStatementCount.toString}
2320
statement-rate={coverage.statementCoverageFormatted}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package scoverage
2+
3+
import java.io.File
4+
import java.util.UUID
5+
6+
import org.scalatest.{FreeSpec, Matchers}
7+
import scoverage.report.{ScoverageXmlReader, ScoverageXmlWriter}
8+
9+
class ScoverageXmlReader extends FreeSpec with Matchers {
10+
11+
"scoverage xml reader" - {
12+
"should read output from ScoverageXmlWriter" in {
13+
14+
val coverage = Coverage()
15+
16+
coverage.add(Statement("/home/sam/src/main/scala/com/scoverage/class.scala",
17+
Location("com.scoverage",
18+
"Test",
19+
"TopLevel",
20+
ClassType.Object,
21+
"somemeth",
22+
"/home/sam/src/main/scala/com/scoverage/class.scala"),
23+
14,
24+
155,
25+
176,
26+
4,
27+
"",
28+
"sym",
29+
"tree",
30+
true,
31+
2))
32+
33+
coverage.add(Statement("/home/sam/src/main/scala/com/scoverage/foo/class.scala",
34+
Location("com.scoverage.foo",
35+
"ServiceState",
36+
"Service",
37+
ClassType.Trait,
38+
"methlab",
39+
"/home/sam/src/main/scala/com/scoverage/foo/class.scala"),
40+
16,
41+
95,
42+
105,
43+
19,
44+
"",
45+
"sym2",
46+
"tree2",
47+
false,
48+
0))
49+
50+
val temp = new File(IOUtils.getTempPath, UUID.randomUUID.toString)
51+
temp.mkdir()
52+
new ScoverageXmlWriter(new File("/home/sam"), temp, true).write(coverage)
53+
println(temp.getAbsolutePath)
54+
55+
val actual = ScoverageXmlReader.read(IOUtils.reportFile(temp, true))
56+
// we don't care about the statement ids as the will change on reading back in
57+
actual.statements.map(_.copy(id = 0)).toSet shouldEqual coverage.statements.map(_.copy(id = 0)).toSet
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)