From 64e617c37f93effcfdcc5a610a587ac79128ce8f Mon Sep 17 00:00:00 2001 From: magnolia Date: Sat, 14 Feb 2015 23:02:29 +0900 Subject: [PATCH 1/2] Fixed that URL does not contain the "empty" Order to remove the hierarchy of unnecessary 'empty' from a URL. Because the generated HTML links does not work correctly. --- .../src/main/scala/scoverage/report/ScoverageHtmlWriter.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageHtmlWriter.scala b/scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageHtmlWriter.scala index 4e7e7902..8506014b 100644 --- a/scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageHtmlWriter.scala +++ b/scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageHtmlWriter.scala @@ -215,9 +215,7 @@ class ScoverageHtmlWriter(sourceDirectory: File, outputDir: File) { val path = fileRelativeToSource.getParent val value = fileRelativeToSource.getName - if (path.eq(null)) { - "(empty)/" + value - } else if (path.ne("")) { + if (path.ne("")) { // (Normalise the pathSeparator to "/" in case we are running on Windows) fileRelativeToSource.toString.replace(File.separator, "/") } else { From 256a85babc75be54ac84fc158e07ea4b6a6c530e Mon Sep 17 00:00:00 2001 From: magnolia Date: Wed, 18 Feb 2015 22:16:42 +0900 Subject: [PATCH 2/2] Added tests for ScoverageHtmlWriter.scala --- .../forHtmlWriter/src/main/scala/Class1.scala | 5 ++ .../src/main/scala/subdir/Class2.scala | 5 ++ .../scoverage/ScoverageHtmlWriterTest.scala | 63 +++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/Class1.scala create mode 100644 scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/subdir/Class2.scala create mode 100644 scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageHtmlWriterTest.scala diff --git a/scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/Class1.scala b/scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/Class1.scala new file mode 100644 index 00000000..22a59500 --- /dev/null +++ b/scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/Class1.scala @@ -0,0 +1,5 @@ +package coverage.sample + +class Class1 { + def msg_coverage = println("measure coverage of code") +} diff --git a/scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/subdir/Class2.scala b/scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/subdir/Class2.scala new file mode 100644 index 00000000..5e6a5dec --- /dev/null +++ b/scalac-scoverage-plugin/src/test/resources/scoverage/forHtmlWriter/src/main/scala/subdir/Class2.scala @@ -0,0 +1,5 @@ +package coverage.sample + +class Class2 { + def msg_test = println("test code") +} diff --git a/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageHtmlWriterTest.scala b/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageHtmlWriterTest.scala new file mode 100644 index 00000000..591dbbb2 --- /dev/null +++ b/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageHtmlWriterTest.scala @@ -0,0 +1,63 @@ +package scoverage + +import java.io._ +import java.util.UUID +import scala.io.Source + +import scala.xml.XML + +import scoverage.report.ScoverageHtmlWriter + +import org.scalatest.FunSuite + +class ScoverageHtmlWriterTest extends FunSuite { + + test("HTML coverage report has been created correctly") { + + def tempDir(): File = { + val dir = new File(IOUtils.getTempDirectory, UUID.randomUUID().toString) + dir.mkdirs() + dir.deleteOnExit() + dir + } + + val coverage = Coverage() + + val class2 = getClass.getResource("forHtmlWriter/src/main/scala/subdir/Class2.scala").getFile() + val class1 = getClass.getResource("forHtmlWriter/src/main/scala/Class1.scala").getFile() + + coverage.add( + Statement(class2, + Location("coverage.sample", "Class2","Class", ClassType.Object, "msg_test", class2), + 2, 57, 77, 4, "scala.this.Predef.println("test code")", + "scala.Predef.println", "Apply", false, 0) + ) + + coverage.add( + Statement(class1, + Location("coverage.sample", "Class1","Class", ClassType.Object, "msg_coverage", class1), + 1, 61, 96, 4, "scala.this.Predef.println("measure coverage of code")", + "scala.Predef.println", "Apply", false, 0) + ) + + val dir = getClass.getResource("forHtmlWriter/src/main/scala/").getFile() + val outputDir = tempDir() + + val htmlWriter = new ScoverageHtmlWriter(new File(dir), outputDir) + htmlWriter.write(coverage) + + val htmls = List("overview.html", "coverage.sample.html") + + for (html <- htmls) { + val xml = XML.loadString(Source.fromFile(new File(outputDir, html)).getLines.mkString) + val links = for (node <- xml \\ "a") yield { + node.attribute("href") match { + case Some(url) => url.toString + case None => fail() + } + } + + assert( links.toSet == Set("Class1.scala.html", "subdir/Class2.scala.html") ) + } + } +}