Skip to content

Commit

Permalink
[FIXED JENKINS-14552] added "fail builds if no reports" option instea…
Browse files Browse the repository at this point in the history
…d of checking valid mojo was invokued
  • Loading branch information
ssogabe committed Dec 15, 2012
1 parent b46b1c5 commit 46f5af5
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 49 deletions.
52 changes: 15 additions & 37 deletions src/main/java/hudson/plugins/cobertura/CoberturaPublisher.java
Expand Up @@ -67,6 +67,8 @@ public class CoberturaPublisher extends Recorder {
private final boolean autoUpdateStability;

private final boolean zoomCoverageChart;

private boolean failNoReports = true;

private CoverageTarget healthyTarget;

Expand All @@ -84,14 +86,15 @@ public class CoberturaPublisher extends Recorder {
*/
@DataBoundConstructor
public CoberturaPublisher(String coberturaReportFile, boolean onlyStable, boolean failUnhealthy, boolean failUnstable,
boolean autoUpdateHealth, boolean autoUpdateStability, boolean zoomCoverageChart, SourceEncoding sourceEncoding) {
boolean autoUpdateHealth, boolean autoUpdateStability, boolean zoomCoverageChart, boolean failNoReports, SourceEncoding sourceEncoding) {
this.coberturaReportFile = coberturaReportFile;
this.onlyStable = onlyStable;
this.failUnhealthy = failUnhealthy;
this.failUnstable = failUnstable;
this.autoUpdateHealth = autoUpdateHealth;
this.autoUpdateStability = autoUpdateStability;
this.zoomCoverageChart = zoomCoverageChart;
this.failNoReports = failNoReports;
this.sourceEncoding = sourceEncoding;
this.healthyTarget = new CoverageTarget();
this.unhealthyTarget = new CoverageTarget();
Expand Down Expand Up @@ -235,6 +238,10 @@ public boolean getZoomCoverageChart() {
return zoomCoverageChart;
}

public boolean isFailNoReports() {
return failNoReports;
}

/**
* Getter for property 'healthyTarget'.
*
Expand Down Expand Up @@ -316,22 +323,8 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
listener.getLogger().println("Skipping Cobertura coverage report as build was not " + threshold.toString() + " or better ...");
return true;
}
// Make sure Cobertura actually ran
if (build instanceof MavenBuild) {
MavenBuild mavenBuild = (MavenBuild) build;
if (didCoberturaRun(mavenBuild) == false) {
listener.getLogger().println("Skipping Cobertura coverage report as mojo did not run.");
return true;
}
} else if (build instanceof MavenModuleSetBuild) {
MavenModuleSetBuild moduleSetBuild = (MavenModuleSetBuild) build;
if (didCoberturaRun(moduleSetBuild.getModuleLastBuilds().values()) == false) {
listener.getLogger().println("Skipping Cobertura coverage report as mojo did not run.");
return true;
}
}

listener.getLogger().println("Publishing Cobertura coverage report...");
listener.getLogger().println("[Cobertura] Publishing Cobertura coverage report...");
final FilePath[] moduleRoots = build.getModuleRoots();
final boolean multipleModuleRoots =
moduleRoots != null && moduleRoots.length > 1;
Expand All @@ -356,13 +349,17 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
}

if (reports.length == 0) {
String msg = "No coverage results were found using the pattern '"
String msg = "[Cobertura] No coverage results were found using the pattern '"
+ coberturaReportFile + "' relative to '"
+ moduleRoot.getRemote() + "'."
+ " Did you enter a pattern relative to the correct directory?"
+ " Did you generate the XML report(s) for Cobertura?";
listener.getLogger().println(msg);
build.setResult(Result.FAILURE);
if (failNoReports) {
build.setResult(Result.FAILURE);
} else {
listener.getLogger().println("[Cobertura] Skipped cobertura reports.");
}
return true;
}

Expand Down Expand Up @@ -662,25 +659,6 @@ public boolean accept(File dir, String name) {
}
}

private boolean didCoberturaRun(Iterable<MavenBuild> mavenBuilds) {
for (MavenBuild build : mavenBuilds) {
if (didCoberturaRun(build)) {
return true;
}
}
return false;
}

private boolean didCoberturaRun(MavenBuild mavenBuild) {
for (ExecutedMojo mojo : mavenBuild.getExecutedMojos()) {
if (mojo.groupId.equals("org.codehaus.mojo")
&& (mojo.artifactId.equals("cobertura-maven-plugin") || mojo.artifactId.equals("cobertura-it-maven-plugin"))) {
return true;
}
}
return false;
}

public float roundDecimalFloat(Float input) {
float rounded = (float) Math.round(input);
rounded = rounded / 100f;
Expand Down
Expand Up @@ -8,6 +8,10 @@
description="${%only.stable.builds.description}" >
<f:checkbox name="cobertura.onlyStable" checked="${instance.onlyStable}" />
</f:entry>
<f:entry title="${%Fail builds if no reports}"
description="${%no.reorts.fail.builds.description}" >
<f:checkbox name="cobertura.failNoReports" checked="${instance.failNoReports}" default="true" />
</f:entry>
<f:entry title="${%Fail unhealthy builds}"
description="${%unhealthy.fail.builds.description}" >
<f:checkbox name="cobertura.failUnhealthy" checked="${instance.failUnhealthy}" />
Expand Down
Expand Up @@ -21,4 +21,5 @@ metric.targets.description=\
<img src="{0}/images/16x16/yellow.gif" alt="0%" /> rows, leave blank to \
use the default values (i.e. 0).

source.encoding.description=Encoding when showing files.
source.encoding.description=Encoding when showing files.
no.reorts.fail.builds.description=fail builds if No coverage reports are found.
Expand Up @@ -23,4 +23,5 @@ metric.targets.description=\
<img src="{0}/images/16x16/yellow.gif" alt="0%" /> \u3092\u8a2d\u5b9a\u3057\u306a\u3044\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306e0\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002

Source\ Encoding=\u30bd\u30fc\u30b9\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0
source.encoding.description=\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a\u3059\u308b\u3068\u304d\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u3059\u3002
source.encoding.description=\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a\u3059\u308b\u3068\u304d\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u3059\u3002
no.reorts.fail.builds.description=XML\u30ec\u30dd\u30fc\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u30d3\u30eb\u30c9\u7d50\u679c\u3092\u5931\u6557\u306b\u3057\u307e\u3059\u3002
20 changes: 10 additions & 10 deletions src/test/java/hudson/plugins/cobertura/CoberturaPublisherTest.java
Expand Up @@ -8,40 +8,40 @@ public class CoberturaPublisherTest {

@Test
public void testGetOnlyStable() {
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, true, false, false, false, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, null);
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, true, false, false, false, false, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, false, null);
assertTrue(testObjectTrue.getOnlyStable());
assertTrue(!testObjectFalse.getOnlyStable());
}

@Test
public void testGetFailUnhealthy() {
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, true, false, false, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, null);
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, true, false, false, false, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, false, null);
assertTrue(testObjectTrue.getFailUnhealthy());
assertTrue(!testObjectFalse.getFailUnhealthy());
}

@Test
public void testGetFailUnstable() {
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, false, true, false, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, null);
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, false, true, false, false, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, false, null);
assertTrue(testObjectTrue.getFailUnstable());
assertTrue(!testObjectFalse.getFailUnstable());
}

@Test
public void testGetAutoUpdateHealth() {
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, false, false, true, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, null);
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, false, false, true, false, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, false, null);
assertTrue(testObjectTrue.getAutoUpdateHealth());
assertTrue(!testObjectFalse.getAutoUpdateHealth());
}

@Test
public void testGetAutoUpdateStability() {
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, false, false, false, true, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, null);
CoberturaPublisher testObjectTrue = new CoberturaPublisher(null, false, false, false, false, true, false, false, null);
CoberturaPublisher testObjectFalse = new CoberturaPublisher(null, false, false, false, false, false, false, false, null);
assertTrue(testObjectTrue.getAutoUpdateStability());
assertTrue(!testObjectFalse.getAutoUpdateStability());
}
Expand Down

0 comments on commit 46f5af5

Please sign in to comment.