11package scoverage
22
3+ import java .io .File
4+ import java .util .UUID
35import javax .xml .parsers .DocumentBuilderFactory
6+
7+ import org .apache .commons .io .FileUtils
8+ import org .scalatest .{BeforeAndAfter , FunSuite , OneInstancePerTest }
49import org .xml .sax .{ErrorHandler , SAXParseException }
5- import java .io .File
610import scoverage .report .CoberturaXmlWriter
7- import org . scalatest .{ FunSuite , BeforeAndAfter , OneInstancePerTest }
8- import org . apache . commons . io . FileUtils
11+
12+ import scala . xml . XML
913
1014/** @author Stephen Samuel */
1115class CoberturaXmlWriterTest extends FunSuite with BeforeAndAfter with OneInstancePerTest {
1216
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+
1326 test(" cobertura output validates" ) {
1427
15- val file = new File (FileUtils .getTempDirectoryPath + " /cobertura.xml" )
16- file.deleteOnExit()
28+ val dir = tempDir()
1729
1830 val coverage = Coverage ()
1931 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
3345 coverage.add(MeasuredStatement (" d.scala" , Location (" com.sksamuel.scoverage4" , " D" , ClassType .Object , " delete2" ),
3446 8 , 2 , 3 , 14 , " " , " " , " " , false , 0 ))
3547
36- val writer = new CoberturaXmlWriter (new File (" " ), FileUtils .getTempDirectory )
48+ val writer = new CoberturaXmlWriter (new File (" " ), dir )
3749 writer.write(coverage)
3850
3951 val domFactory = DocumentBuilderFactory .newInstance()
@@ -57,6 +69,28 @@ class CoberturaXmlWriterTest extends FunSuite with BeforeAndAfter with OneInstan
5769 assert(false )
5870 }
5971 })
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+
6195 }
6296}
0 commit comments