diff --git a/src/main/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactory.groovy b/src/main/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactory.groovy index ef8abc8..a168c2a 100644 --- a/src/main/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactory.groovy +++ b/src/main/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactory.groovy @@ -30,6 +30,17 @@ class PITSourceReportFactory implements SourceReportFactory { Map> hitsPerLineMapPerFile = [:] mutations.mutation.each() { mutation -> + def status = mutation.@status + Integer hit + if (status == 'KILLED') { + hit = 1 + } else if (status == 'LIVED' || status == 'NO_COVERAGE') { + hit = 0 + } else { + // Leave null for lines that could not be mutated. + return + } + // PIT reports only the source file's base name, which might not be // unique. Assume the source file's directory can be derived from // the package name. @@ -43,10 +54,11 @@ class PITSourceReportFactory implements SourceReportFactory { } def packageName = matcher.group(0) def filename = packageName.replace('.', File.separator) + mutation.sourceFile.text() + def hitsPerLine = hitsPerLineMapPerFile.get(filename, [:]) Integer lineNumber = mutation.lineNumber.text().toInteger() - 1 Integer hits = hitsPerLine.get(lineNumber, 0) - hitsPerLine[lineNumber] = hits + 1 + hitsPerLine[lineNumber] = hits + hit } List reports = new ArrayList() diff --git a/src/test/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactoryTest.groovy b/src/test/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactoryTest.groovy index 4359ae0..9a8b685 100644 --- a/src/test/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactoryTest.groovy +++ b/src/test/groovy/org/kt3k/gradle/plugin/coveralls/domain/PITSourceReportFactoryTest.groovy @@ -33,9 +33,11 @@ class PITSourceReportFactoryTest { assertEquals 'src/test/fixture/org/kt3k/bankaccount/BankAccount.java', reports[0].name assertEquals 30, reports[0].coverage.size() - assertEquals 4, reports[0].coverage.findAll{ it != null }.sum() + assertEquals 4, reports[0].coverage.findAll{ it != null }.size() + assertEquals 3, reports[0].coverage.findAll{ it != null }.sum() assertEquals 'src/test/fixture/org/kt3k/bankaccount/TransferContext.java', reports[1].name assertEquals 45, reports[1].coverage.size() + assertEquals 4, reports[1].coverage.findAll{ it != null }.size() assertEquals 4, reports[1].coverage.findAll{ it != null }.sum() }