From 9c5b0c4b17b2475a85c0d12015949cb7cabcde5c Mon Sep 17 00:00:00 2001 From: Kingsley Hendrickse Date: Sat, 26 May 2012 10:50:27 +0100 Subject: [PATCH] Fixed Issue #8 - added project level report link to the latest completed build and added cucmber icon for the image --- .../jenkins/CucumberReportBaseAction.java | 4 +- .../jenkins/CucumberReportProjectAction.java | 92 ++++++++++-------- .../jenkins/CucumberReportPublisher.java | 6 ++ src/main/webapp/cuke.gif | Bin 0 -> 15220 bytes 4 files changed, 61 insertions(+), 41 deletions(-) create mode 100644 src/main/webapp/cuke.gif diff --git a/src/main/java/net/masterthought/jenkins/CucumberReportBaseAction.java b/src/main/java/net/masterthought/jenkins/CucumberReportBaseAction.java index f1be464..71cec13 100644 --- a/src/main/java/net/masterthought/jenkins/CucumberReportBaseAction.java +++ b/src/main/java/net/masterthought/jenkins/CucumberReportBaseAction.java @@ -1,10 +1,12 @@ package net.masterthought.jenkins; import hudson.FilePath; +import hudson.PluginWrapper; import hudson.model.AbstractItem; import hudson.model.Action; import hudson.model.DirectoryBrowserSupport; import hudson.model.ProminentProjectAction; +import jenkins.model.Jenkins; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; @@ -23,7 +25,7 @@ public abstract class CucumberReportBaseAction implements Action { } public String getIconFileName(){ - return dir().exists() ? "graph.gif" : null; + return "/plugin/cucumber-reports/cuke.gif"; } public void doDynamic(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { diff --git a/src/main/java/net/masterthought/jenkins/CucumberReportProjectAction.java b/src/main/java/net/masterthought/jenkins/CucumberReportProjectAction.java index d2d3c6f..bff9f6b 100644 --- a/src/main/java/net/masterthought/jenkins/CucumberReportProjectAction.java +++ b/src/main/java/net/masterthought/jenkins/CucumberReportProjectAction.java @@ -1,40 +1,52 @@ -//package net.masterthought.jenkins; -// -//import hudson.model.AbstractItem; -//import hudson.model.AbstractProject; -//import hudson.model.ProminentProjectAction; -//import hudson.model.Run; -// -//import java.io.File; -// -//public class CucumberReportProjectAction extends CucumberReportBaseAction implements ProminentProjectAction { -// private final AbstractItem project; -// -// public CucumberReportProjectAction(AbstractItem project) { -// super(); -// this.project = project; -// } -// -// @Override -// protected File dir() { -// if (this.project instanceof AbstractProject) { -// AbstractProject abstractProject = (AbstractProject) this.project; -// -// Run run = abstractProject.getLastSuccessfulBuild(); -// if (run != null) { -// File javadocDir = getBuildArchiveDir(run); -// -// if (javadocDir.exists()) { -// return javadocDir; -// } -// } -// } -// -// return getProjectArchiveDir(this.project); -// } -// -// @Override -// protected String getTitle() { -// return this.project.getDisplayName() + " html2"; -// } -//} \ No newline at end of file +package net.masterthought.jenkins; + +import hudson.model.AbstractItem; +import hudson.model.AbstractProject; +import hudson.model.ProminentProjectAction; +import hudson.model.Run; + +import java.io.File; + +public class CucumberReportProjectAction extends CucumberReportBaseAction implements ProminentProjectAction { + private final AbstractItem project; + + public CucumberReportProjectAction(AbstractItem project) { + super(); + this.project = project; + } + + @Override + protected File dir() { + if (this.project instanceof AbstractProject) { + AbstractProject abstractProject = (AbstractProject) this.project; + + Run run = abstractProject.getLastCompletedBuild(); + if (run != null) { + File javadocDir = getBuildArchiveDir(run); + + if (javadocDir.exists()) { + return javadocDir; + } + } + } + + return getProjectArchiveDir(this.project); + } + + private File getProjectArchiveDir(AbstractItem project) { + return new File(project.getRootDir(), "cucumber-html-reports"); + } + + /** + * Gets the directory where the HTML report is stored for the given build. + */ + private File getBuildArchiveDir(Run run) { + return new File(run.getRootDir(), "cucumber-html-reports"); + } + + + @Override + protected String getTitle() { + return this.project.getDisplayName() + " html2"; + } +} \ No newline at end of file diff --git a/src/main/java/net/masterthought/jenkins/CucumberReportPublisher.java b/src/main/java/net/masterthought/jenkins/CucumberReportPublisher.java index c02365c..78c0646 100644 --- a/src/main/java/net/masterthought/jenkins/CucumberReportPublisher.java +++ b/src/main/java/net/masterthought/jenkins/CucumberReportPublisher.java @@ -5,6 +5,7 @@ import hudson.FilePath; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; +import hudson.model.Action; import hudson.model.BuildListener; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.BuildStepMonitor; @@ -98,6 +99,11 @@ public class CucumberReportPublisher extends Recorder { return fullPathList; } + @Override + public Action getProjectAction(AbstractProject project) { + return new CucumberReportProjectAction(project); + } + @Extension public static class DescriptorImpl extends BuildStepDescriptor { @Override diff --git a/src/main/webapp/cuke.gif b/src/main/webapp/cuke.gif new file mode 100644 index 0000000000000000000000000000000000000000..888c4d39fb3a84800596195096b5ae30b3e9caaa GIT binary patch literal 15220 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 literal 0 HcmV?d00001