|
| 1 | +package scoverage |
| 2 | + |
| 3 | +import java.io._ |
| 4 | +import java.util.UUID |
| 5 | +import scala.io.Source |
| 6 | + |
| 7 | +import scala.xml.XML |
| 8 | + |
| 9 | +import scoverage.report.ScoverageHtmlWriter |
| 10 | + |
| 11 | +import org.scalatest.FunSuite |
| 12 | + |
| 13 | +class ScoverageHtmlWriterTest extends FunSuite { |
| 14 | + |
| 15 | + test("HTML coverage report has been created correctly") { |
| 16 | + |
| 17 | + def tempDir(): File = { |
| 18 | + val dir = new File(IOUtils.getTempDirectory, UUID.randomUUID().toString) |
| 19 | + dir.mkdirs() |
| 20 | + dir.deleteOnExit() |
| 21 | + dir |
| 22 | + } |
| 23 | + |
| 24 | + val coverage = Coverage() |
| 25 | + |
| 26 | + val class2 = getClass.getResource("forHtmlWriter/src/main/scala/subdir/Class2.scala").getFile() |
| 27 | + val class1 = getClass.getResource("forHtmlWriter/src/main/scala/Class1.scala").getFile() |
| 28 | + |
| 29 | + coverage.add( |
| 30 | + Statement(class2, |
| 31 | + Location("coverage.sample", "Class2","Class", ClassType.Object, "msg_test", class2), |
| 32 | + 2, 57, 77, 4, "scala.this.Predef.println("test code")", |
| 33 | + "scala.Predef.println", "Apply", false, 0) |
| 34 | + ) |
| 35 | + |
| 36 | + coverage.add( |
| 37 | + Statement(class1, |
| 38 | + Location("coverage.sample", "Class1","Class", ClassType.Object, "msg_coverage", class1), |
| 39 | + 1, 61, 96, 4, "scala.this.Predef.println("measure coverage of code")", |
| 40 | + "scala.Predef.println", "Apply", false, 0) |
| 41 | + ) |
| 42 | + |
| 43 | + val dir = getClass.getResource("forHtmlWriter/src/main/scala/").getFile() |
| 44 | + val outputDir = tempDir() |
| 45 | + |
| 46 | + val htmlWriter = new ScoverageHtmlWriter(new File(dir), outputDir) |
| 47 | + htmlWriter.write(coverage) |
| 48 | + |
| 49 | + val htmls = List("overview.html", "coverage.sample.html") |
| 50 | + |
| 51 | + for (html <- htmls) { |
| 52 | + val xml = XML.loadString(Source.fromFile(new File(outputDir, html)).getLines.mkString) |
| 53 | + val links = for (node <- xml \\ "a") yield { |
| 54 | + node.attribute("href") match { |
| 55 | + case Some(url) => url.toString |
| 56 | + case None => fail() |
| 57 | + } |
| 58 | + } |
| 59 | + |
| 60 | + assert( links.toSet == Set("Class1.scala.html", "subdir/Class2.scala.html") ) |
| 61 | + } |
| 62 | + } |
| 63 | +} |
0 commit comments