@@ -12,39 +12,49 @@ import org.scalatest.FunSuite
1212
1313class ScoverageHtmlWriterTest extends FunSuite {
1414
15- test( " HTML coverage report has been created correctly " ) {
15+ val rootDirForClasses = new File (getClass.getResource( " forHtmlWriter/src/main/scala/ " ).getFile)
1616
17- def tempDir (): File = {
18- val dir = new File (IOUtils .getTempDirectory, UUID .randomUUID().toString)
19- dir.mkdirs()
20- dir.deleteOnExit()
21- dir
22- }
17+ def pathToClassFile (classLocation : String ): String =
18+ new File (rootDirForClasses, classLocation).getCanonicalPath
2319
24- val coverage = Coverage ()
20+ val pathToClassContainingHtml = pathToClassFile(" ClassContainingHtml.scala" )
21+ val pathToClassInSubDir = pathToClassFile(" subdir/ClassInSubDir.scala" )
22+ val pathToClassInMainDir = pathToClassFile(" ClassInMainDir.scala" )
2523
26- val class2 = new File (getClass.getResource(" forHtmlWriter/src/main/scala/subdir/Class2.scala" ).getFile()).getCanonicalPath()
27- val class1 = new File (getClass.getResource(" forHtmlWriter/src/main/scala/Class1.scala" ).getFile()).getCanonicalPath()
24+ val statementForClassContainingHtml = Statement (pathToClassContainingHtml,
25+ Location (" coverage.sample" , " ClassContainingHtml" , " ClassContainingHtml" , ClassType .Class , " some_html" , pathToClassInSubDir),
26+ 3 , 74 , 97 , 4 , " <div>HTML content</div>" ,
27+ " scala.Predef.println" , " Apply" , false , 0 )
28+ val statementForClassInSubDir = Statement (pathToClassInSubDir,
29+ Location (" coverage.sample" , " ClassInSubDir" , " ClassInSubDir" , ClassType .Class , " msg_test" , pathToClassInSubDir),
30+ 2 , 64 , 84 , 4 , " scala.this.Predef.println(\" test code\" )" ,
31+ " scala.Predef.println" , " Apply" , false , 0 )
32+ val statementForClassInMainDir = Statement (pathToClassInMainDir,
33+ Location (" coverage.sample" , " ClassInMainDir" , " ClassInMainDir" , ClassType .Class , " msg_coverage" , pathToClassInMainDir),
34+ 1 , 69 , 104 , 4 , " scala.this.Predef.println(\" measure coverage of code\" )" ,
35+ " scala.Predef.println" , " Apply" , false , 0 )
2836
29- coverage.add(
30- Statement (class2,
31- Location ( " coverage.sample " , " Class2 " , " coverage.sample.Class2 " , ClassType . Class , " msg_test " , class2),
32- 2 , 60 , 80 , 4 , " scala.this.Predef.println( \" test code \" ) " ,
33- " scala.Predef.println " , " Apply " , false , 0 )
34- )
37+ def createTemporaryDir () : File = {
38+ val dir = new File ( IOUtils .getTempDirectory, UUID .randomUUID().toString)
39+ dir.mkdirs()
40+ dir.deleteOnExit()
41+ dir
42+ }
3543
36- coverage.add(
37- Statement (class1,
38- Location ( " coverage.sample " , " Class1 " , " coverage.sample.Class1 " , ClassType . Class , " msg_coverage " , class1),
39- 1 , 64 , 99 , 4 , " scala.this.Predef.println( \" measure coverage of code \" ) " ,
40- " scala.Predef.println " , " Apply " , false , 0 )
41- )
44+ def writeCoverageToTemporaryDir ( coverage : Coverage ) : File = {
45+ val outputDir = createTemporaryDir()
46+ val htmlWriter = new ScoverageHtmlWriter (rootDirForClasses, outputDir)
47+ htmlWriter.write( coverage)
48+ outputDir
49+ }
4250
43- val dir = getClass.getResource(" forHtmlWriter/src/main/scala/" ).getFile()
44- val outputDir = tempDir()
51+ test(" HTML coverage report contains correct links" ) {
4552
46- val htmlWriter = new ScoverageHtmlWriter (new File (dir), outputDir)
47- htmlWriter.write(coverage)
53+ val coverage = Coverage ()
54+ coverage.add(statementForClassInSubDir)
55+ coverage.add(statementForClassInMainDir)
56+
57+ val outputDir = writeCoverageToTemporaryDir(coverage)
4858
4959 val htmls = List (" overview.html" , " coverage.sample.html" )
5060
@@ -57,7 +67,18 @@ class ScoverageHtmlWriterTest extends FunSuite {
5767 }
5868 }
5969
60- assert( links.toSet == Set (" Class1 .scala.html" , " subdir/Class2 .scala.html" ) )
70+ assert( links.toSet == Set (" ClassInMainDir .scala.html" , " subdir/ClassInSubDir .scala.html" ) )
6171 }
6272 }
73+
74+ test(" HTML coverage report escapes HTML" ) {
75+
76+ val coverage = Coverage ()
77+ coverage.add(statementForClassContainingHtml)
78+ val outputDir = writeCoverageToTemporaryDir(coverage)
79+
80+ val contentsOfFileWithEmbeddedHtml = Source .fromFile(new File (outputDir, " ClassContainingHtml.scala.html" )).getLines.mkString
81+ assert( ! contentsOfFileWithEmbeddedHtml.contains(" <div>HTML content</div>" ) )
82+ assert( contentsOfFileWithEmbeddedHtml.contains(" <div>HTML content</div>" ) )
83+ }
6384}
0 commit comments