Skip to content
This repository was archived by the owner on Dec 3, 2020. It is now read-only.

Improve error message for empty report files #9

Merged
merged 1 commit into from
Mar 8, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 17 additions & 10 deletions src/main/scala/com/codacy/parsers/CoverageParser.scala
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package com.codacy.parsers

import java.io.File

import com.codacy.api.{CoverageReport, Language}
import com.codacy.parsers.implementation.{JacocoParser, CoberturaParser}
import com.codacy.parsers.implementation.{CoberturaParser, JacocoParser}
import com.codacy.parsers.util.XML

import java.io.File
import scala.util.Try
import scala.xml.Elem

Expand All @@ -30,12 +28,21 @@ trait XMLCoverageParser extends CoverageParser {
object CoverageParserFactory {

def withCoverageReport[A](language: Language.Value, rootProject: File, reportFile: File)(block: CoverageReport => A): Either[String, A] = {
create(language, rootProject, reportFile).map {
parser =>
val report = parser.generateReport()
Right(block(report))
}.getOrElse {
Left(s"no parser for $language")
val isEmptyReport = {
// just starting by detecting the simplest case: a single report file
Try(reportFile.isFile && reportFile.length() == 0).getOrElse(false)
}

if (isEmptyReport) {
Left(s"report file is empty: ${reportFile.getAbsolutePath}")
} else {
create(language, rootProject, reportFile).map {
parser =>
val report = parser.generateReport()
Right(block(report))
}.getOrElse {
Left(s"no parser for $language")
}
}
}

Expand Down