1
1
package scoverage
2
2
3
+ import java .io .File
4
+ import java .util .UUID
3
5
import javax .xml .parsers .DocumentBuilderFactory
6
+
7
+ import org .apache .commons .io .FileUtils
8
+ import org .scalatest .{BeforeAndAfter , FunSuite , OneInstancePerTest }
4
9
import org .xml .sax .{ErrorHandler , SAXParseException }
5
- import java .io .File
6
10
import scoverage .report .CoberturaXmlWriter
7
- import org . scalatest .{ FunSuite , BeforeAndAfter , OneInstancePerTest }
8
- import org . apache . commons . io . FileUtils
11
+
12
+ import scala . xml . XML
9
13
10
14
/** @author Stephen Samuel */
11
15
class CoberturaXmlWriterTest extends FunSuite with BeforeAndAfter with OneInstancePerTest {
12
16
17
+ def tempDir (): File = {
18
+ val dir = new File (FileUtils .getTempDirectory, UUID .randomUUID().toString)
19
+ dir.mkdirs()
20
+ dir.deleteOnExit()
21
+ dir
22
+ }
23
+
24
+ def fileIn (dir : File ) = new File (dir, " cobertura.xml" )
25
+
13
26
test(" cobertura output validates" ) {
14
27
15
- val file = new File (FileUtils .getTempDirectoryPath + " /cobertura.xml" )
16
- file.deleteOnExit()
28
+ val dir = tempDir()
17
29
18
30
val coverage = Coverage ()
19
31
coverage.add(MeasuredStatement (" a.scala" , Location (" com.sksamuel.scoverage" , " A" , ClassType .Object , " create" ),
@@ -33,7 +45,7 @@ class CoberturaXmlWriterTest extends FunSuite with BeforeAndAfter with OneInstan
33
45
coverage.add(MeasuredStatement (" d.scala" , Location (" com.sksamuel.scoverage4" , " D" , ClassType .Object , " delete2" ),
34
46
8 , 2 , 3 , 14 , " " , " " , " " , false , 0 ))
35
47
36
- val writer = new CoberturaXmlWriter (new File (" " ), FileUtils .getTempDirectory )
48
+ val writer = new CoberturaXmlWriter (new File (" " ), tempDir )
37
49
writer.write(coverage)
38
50
39
51
val domFactory = DocumentBuilderFactory .newInstance()
@@ -57,6 +69,28 @@ class CoberturaXmlWriterTest extends FunSuite with BeforeAndAfter with OneInstan
57
69
assert(false )
58
70
}
59
71
})
60
- builder.parse(file)
72
+ builder.parse(fileIn(dir))
73
+ }
74
+
75
+ test(" coverage rates are written as 2dp decimal values rather than percentage" ) {
76
+
77
+ val dir = tempDir()
78
+
79
+ val coverage = Coverage ()
80
+ coverage.add(MeasuredStatement (" a.scala" , Location (" com.sksamuel.scoverage" , " A" , ClassType .Object , " create" ),
81
+ 1 , 2 , 3 , 12 , " " , " " , " " , false ))
82
+ coverage.add(MeasuredStatement (" a.scala" , Location (" com.sksamuel.scoverage" , " A" , ClassType .Object , " create2" ),
83
+ 2 , 2 , 3 , 16 , " " , " " , " " , true ))
84
+ coverage.add(MeasuredStatement (" a.scala" , Location (" com.sksamuel.scoverage" , " A" , ClassType .Object , " create3" ),
85
+ 3 , 3 , 3 , 20 , " " , " " , " " , true , 1 ))
86
+
87
+ val writer = new CoberturaXmlWriter (new File (" " ), dir)
88
+ writer.write(coverage)
89
+
90
+ val xml = XML .loadFile(fileIn(dir))
91
+
92
+ assert(xml \\ " coverage" \@ " line-rate" === " 0.33" , " line-rate" )
93
+ assert(xml \\ " coverage" \@ " branch-rate" === " 0.50" , " branch-rate" )
94
+
61
95
}
62
96
}
0 commit comments