@@ -12,39 +12,49 @@ import org.scalatest.FunSuite
12
12
13
13
class ScoverageHtmlWriterTest extends FunSuite {
14
14
15
- test( " HTML coverage report has been created correctly " ) {
15
+ val rootDirForClasses = new File (getClass.getResource( " forHtmlWriter/src/main/scala/ " ).getFile)
16
16
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
23
19
24
- val coverage = Coverage ()
20
+ val pathToClassContainingHtml = pathToClassFile(" ClassContainingHtml.scala" )
21
+ val pathToClassInSubDir = pathToClassFile(" subdir/ClassInSubDir.scala" )
22
+ val pathToClassInMainDir = pathToClassFile(" ClassInMainDir.scala" )
25
23
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 )
28
36
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
+ }
35
43
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
+ }
42
50
43
- val dir = getClass.getResource(" forHtmlWriter/src/main/scala/" ).getFile()
44
- val outputDir = tempDir()
51
+ test(" HTML coverage report contains correct links" ) {
45
52
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)
48
58
49
59
val htmls = List (" overview.html" , " coverage.sample.html" )
50
60
@@ -57,7 +67,18 @@ class ScoverageHtmlWriterTest extends FunSuite {
57
67
}
58
68
}
59
69
60
- assert( links.toSet == Set (" Class1 .scala.html" , " subdir/Class2 .scala.html" ) )
70
+ assert( links.toSet == Set (" ClassInMainDir .scala.html" , " subdir/ClassInSubDir .scala.html" ) )
61
71
}
62
72
}
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
+ }
63
84
}
0 commit comments