Skip to content

Commit ec8011d

Browse files
committed
Fixed bug with package names
1 parent a3afb66 commit ec8011d

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageHtmlWriter.scala

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,33 @@ class ScoverageHtmlWriter(sourceDirectory: File, outputDir: File) {
1717

1818
val index = IOUtils.readStreamAsString(getClass.getResourceAsStream("/scoverage/index.html"))
1919
IOUtils.writeToFile(indexFile, index)
20-
IOUtils.writeToFile(packageFile, packages(coverage).toString)
20+
IOUtils.writeToFile(packageFile, packageList(coverage).toString)
2121
IOUtils.writeToFile(overviewFile, overview(coverage).toString)
2222

23-
coverage.packages.foreach(write)
23+
coverage.packages.foreach(writePackage)
2424
}
2525

2626
private def relativeSource(src: String): String = src.replace(sourceDirectory.getAbsolutePath + File.separator, "")
2727

28-
private def write(pkg: MeasuredPackage): Unit = {
29-
// package overview files are written out using a directory structure that respects the directory name
28+
private def writePackage(pkg: MeasuredPackage): Unit = {
29+
// package overview files are written out using a filename that respects the package name
3030
// that means package com.example declared in a class at src/main/scala/mystuff/MyClass.scala will be written
31-
// to com/example/package.html
32-
// this is because a single class may have multiple packages so we cannot use original/path/package.html as
33-
// they might clash
34-
val packageFile = new File(pkg.name.replace("<empty>", "(empty)").replace(".", File.separator), "package.html")
35-
val file = new File(outputDir, packageFile.getPath)
31+
// to com.example.html
32+
val file = new File(outputDir, packageOverviewRelativePath(pkg))
3633
file.getParentFile.mkdirs()
3734
IOUtils.writeToFile(file, packageOverview(pkg).toString)
38-
pkg.files.foreach(write(_, file.getParentFile))
35+
pkg.files.foreach(writeFile)
3936
}
4037

41-
private def write(mfile: MeasuredFile, dir: File): Unit = {
38+
private def writeFile(mfile: MeasuredFile): Unit = {
4239
// each highlighted file is written out using the same structure as the original file.
43-
val file = new File(outputDir, relativeSource(mfile.source))
40+
val file = new File(outputDir, relativeSource(mfile.source) + ".html")
4441
file.getParentFile.mkdirs()
4542
IOUtils.writeToFile(file, filePage(mfile).toString)
4643
}
4744

45+
private def packageOverviewRelativePath(pkg: MeasuredPackage) = pkg.name.replace("<empty>", "(empty)") + ".html"
46+
4847
private def filePage(mfile: MeasuredFile): Node = {
4948
val filename = relativeSource(mfile.source) + ".html"
5049
val css =
@@ -88,7 +87,7 @@ class ScoverageHtmlWriter(sourceDirectory: File, outputDir: File) {
8887

8988
}
9089

91-
def head = {
90+
def header = {
9291
val css = """.meter {
9392
| height: 14px;
9493
| position: relative;
@@ -156,7 +155,7 @@ class ScoverageHtmlWriter(sourceDirectory: File, outputDir: File) {
156155

157156
def packageOverview(pack: MeasuredPackage): Node = {
158157
<html>
159-
{head}<body style="font-family: monospace;">
158+
{header}<body style="font-family: monospace;">
160159
{classesTable(pack.classes, false)}
161160
</body>
162161
</html>
@@ -278,7 +277,7 @@ class ScoverageHtmlWriter(sourceDirectory: File, outputDir: File) {
278277
</tr>
279278
}
280279

281-
def packages(coverage: Coverage): Node = {
280+
def packageList(coverage: Coverage): Node = {
282281
<html>
283282
<head>
284283
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
@@ -303,7 +302,7 @@ class ScoverageHtmlWriter(sourceDirectory: File, outputDir: File) {
303302
</tr>{coverage.packages.map(arg =>
304303
<tr>
305304
<td>
306-
<a href={arg.name.replace("<empty>", "(empty)").replace('.', '/') + "/package.html"} target="mainFrame">
305+
<a href={packageOverviewRelativePath(arg)} target="mainFrame">
307306
{arg.name}
308307
</a>{arg.statementCoverageFormatted}
309308
%
@@ -405,7 +404,7 @@ class ScoverageHtmlWriter(sourceDirectory: File, outputDir: File) {
405404

406405
def overview(coverage: Coverage): Node = {
407406
<html>
408-
{head}<body style="font-family: monospace;">
407+
{header}<body style="font-family: monospace;">
409408
<div class="alert alert-info">
410409
<b>
411410
SCoverage

0 commit comments

Comments
 (0)