From 4b72095547da2d0cd1f3d0c9ebfe6230ea27ab1f Mon Sep 17 00:00:00 2001 From: Patrick Brueckner Date: Wed, 26 Aug 2015 16:57:44 +0200 Subject: [PATCH] pay tribute to healthyTarget as amplification factor for HealthReport [FIXES JENKINS-20233] --- .../plugins/cloverphp/CloverBuildAction.java | 11 +++++-- .../cloverphp/CloverBuildActionTest.java | 31 +++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/cloverphp/CloverBuildAction.java b/src/main/java/org/jenkinsci/plugins/cloverphp/CloverBuildAction.java index 384cbdf..ee747fb 100644 --- a/src/main/java/org/jenkinsci/plugins/cloverphp/CloverBuildAction.java +++ b/src/main/java/org/jenkinsci/plugins/cloverphp/CloverBuildAction.java @@ -59,17 +59,22 @@ public HealthReport getBuildHealth() { switch (minKey) { case METHOD: description = Messages._CloverBuildAction_MethodCoverage( - projectCoverage.getMethodCoverage().getPercentage(), + Ratio.create( + projectCoverage.getMethodCoverage().getPercentage(), + this.healthyTarget.getMethodCoverage()).getPercentage(), projectCoverage.getMethodCoverage().toString()); break; case STATEMENT: description = Messages._CloverBuildAction_StatementCoverage( - projectCoverage.getStatementCoverage().getPercentage(), + Ratio.create( + projectCoverage.getStatementCoverage().getPercentage(), + this.healthyTarget.getStatementCoverage()).getPercentage(), projectCoverage.getStatementCoverage().toString()); break; case ELEMENT: description = Messages._CloverBuildAction_ElementCoverage( - projectCoverage.getElementCoverage().getPercentage(), + Ratio.create(projectCoverage.getElementCoverage().getPercentage(), + this.healthyTarget.getStatementCoverage()).getPercentage(), projectCoverage.getElementCoverage().toString()); break; default: diff --git a/src/test/java/org/jenkinsci/plugins/cloverphp/CloverBuildActionTest.java b/src/test/java/org/jenkinsci/plugins/cloverphp/CloverBuildActionTest.java index 520ffec..1d7fcf0 100644 --- a/src/test/java/org/jenkinsci/plugins/cloverphp/CloverBuildActionTest.java +++ b/src/test/java/org/jenkinsci/plugins/cloverphp/CloverBuildActionTest.java @@ -1,6 +1,7 @@ package org.jenkinsci.plugins.cloverphp; import hudson.model.AbstractBuild; +import hudson.model.HealthReport; import hudson.model.Result; import org.jenkinsci.plugins.cloverphp.results.ProjectCoverage; import org.jenkinsci.plugins.cloverphp.targets.CoverageTarget; @@ -133,4 +134,34 @@ public void testPreviousResult() { assertNull(action.getPreviousResult()); } + @Test + public void testHealthReportAmplification() { + // GIVEN a build with some coverage metrics + AbstractBuild build = mock(AbstractBuild.class); + String workspacePath = "/tmp/workpath"; + ProjectCoverage prjCoverage = new ProjectCoverage(); + CoverageTarget healthyTarget = new CoverageTarget(); + CoverageTarget unhealthyTarget = new CoverageTarget(); + + prjCoverage.setCoveredelements(300); + prjCoverage.setElements(1000); + healthyTarget.setElementCoverage(30); // 300/1000 = 30%, target 30% => 100% match + + prjCoverage.setCoveredstatements(300); + prjCoverage.setStatements(1000); + healthyTarget.setStatementCoverage(40); // 300/1000 = 30%, target 40% => 75% match + + prjCoverage.setCoveredmethods(300); + prjCoverage.setMethods(1000); + healthyTarget.setMethodCoverage(50); // 300/1000 = 30%, target 50% => 60% match + + CloverBuildAction action = new CloverBuildAction(build, workspacePath, prjCoverage, healthyTarget, unhealthyTarget); + + // WHEN calculating the health report + HealthReport healthReport = action.getBuildHealth(); + + // IT shoud + assertEquals("return 60% score, as this is the lowest value", 60, healthReport.getScore()); + } + }