Skip to content

Commit

Permalink
Merge branch 'pr/14'
Browse files Browse the repository at this point in the history
JENKINS-38149: merge part-2 of this issue, thanks to @anenviousguest and @oleg-nenashev
  • Loading branch information
kinow committed Nov 29, 2016
2 parents 2044059 + e609a9b commit b39c1fd
Show file tree
Hide file tree
Showing 17 changed files with 302 additions and 257 deletions.
195 changes: 98 additions & 97 deletions pom.xml
Expand Up @@ -23,38 +23,39 @@
~ THE SOFTWARE.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.580.3</version><!-- which version of Jenkins is this plugin
built against? -->
</parent>
<modelVersion>4.0.0</modelVersion>

<inceptionYear>2011</inceptionYear>
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<!-- First LTS which includes OptionalJobProperty. -->
<version>1.642.1</version>
</parent>

<groupId>org.tap4j</groupId>
<artifactId>tap</artifactId>
<name>Jenkins TAP Plugin</name>
<version>2.0.2-SNAPSHOT</version>
<packaging>hpi</packaging>
<inceptionYear>2011</inceptionYear>

<licenses>
<license>
<name>MIT License</name>
<url>http://opensource.org/licenses/MIT</url>
</license>
</licenses>
<groupId>org.tap4j</groupId>
<artifactId>tap</artifactId>
<name>Jenkins TAP Plugin</name>
<version>2.1-SNAPSHOT</version>
<packaging>hpi</packaging>

<description>This plugin publishes TAP test results.</description>
<licenses>
<license>
<name>MIT License</name>
<url>http://opensource.org/licenses/MIT</url>
</license>
</licenses>

<url>http://wiki.jenkins-ci.org/display/JENKINS/TAP+Plugin</url>
<description>This plugin publishes TAP test results.</description>

<organization>
<name>Jenkins</name>
<url>http://www.jenkins-ci.org</url>
</organization>
<url>http://wiki.jenkins-ci.org/display/JENKINS/TAP+Plugin</url>

<organization>
<name>Jenkins</name>
<url>http://www.jenkins-ci.org</url>
</organization>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand All @@ -66,39 +67,39 @@
<junit.plugin.version>1.6</junit.plugin.version>
</properties>

<issueManagement>
<system>JIRA</system>
<url>https://issues.jenkins-ci.org/browse/JENKINS/component/15874</url>
</issueManagement>

<distributionManagement>
<repository>
<id>maven.jenkins-ci.org</id>
<name>jenkinsci-releases</name>
<url>https://repo.jenkins-ci.org/releases/</url>
</repository>
</distributionManagement>

<developers>
<developer>
<id>kinow</id>
<name>Bruno P. Kinoshita</name>
<email>brunodepaulak@yahoo.com.br</email>
<timezone>+12</timezone>
<roles>
<role>Developer</role>
</roles>
</developer>
</developers>

<scm>
<connection>scm:git:git://github.com/jenkinsci/tap-plugin.git</connection>
<developerConnection>scm:git:git@github.com:jenkinsci/tap-plugin.git</developerConnection>
<url>http://github.com/jenkinsci/tap-plugin</url>
<tag>HEAD</tag>
</scm>

<dependencies>
<issueManagement>
<system>JIRA</system>
<url>https://issues.jenkins-ci.org/browse/JENKINS/component/15874</url>
</issueManagement>

<distributionManagement>
<repository>
<id>maven.jenkins-ci.org</id>
<name>jenkinsci-releases</name>
<url>https://repo.jenkins-ci.org/releases/</url>
</repository>
</distributionManagement>

<developers>
<developer>
<id>kinow</id>
<name>Bruno P. Kinoshita</name>
<email>brunodepaulak@yahoo.com.br</email>
<timezone>-3</timezone>
<roles>
<role>Developer</role>
</roles>
</developer>
</developers>

<scm>
<connection>scm:git:git://github.com/jenkinsci/tap-plugin.git</connection>
<developerConnection>scm:git:git@github.com:jenkinsci/tap-plugin.git</developerConnection>
<url>http://github.com/jenkinsci/tap-plugin</url>
<tag>HEAD</tag>
</scm>

<dependencies>
<!-- The TAP parser -->
<dependency>
<groupId>org.tap4j</groupId>
Expand All @@ -119,48 +120,48 @@
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<groupId>org.jenkins-ci.plugins.workflow</groupId>
<artifactId>workflow-job</artifactId>
<version>2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<groupId>org.jenkins-ci.plugins.workflow</groupId>
<artifactId>workflow-cps</artifactId>
<version>2.12</version>
<scope>test</scope>
</dependency>
</dependencies>

<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${jdk.source}</source>
<target>${jdk.target}</target>
<debug>${jdk.debug}</debug>
<optimize>${jdk.optimize}</optimize>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</dependencies>

<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${jdk.source}</source>
<target>${jdk.target}</target>
<debug>${jdk.debug}</debug>
<optimize>${jdk.optimize}</optimize>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
37 changes: 23 additions & 14 deletions src/main/java/org/tap4j/plugin/TapProjectAction.java
Expand Up @@ -24,7 +24,6 @@
package org.tap4j.plugin;

import hudson.matrix.MatrixProject;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Job;
import hudson.model.Run;
Expand Down Expand Up @@ -93,7 +92,7 @@ protected Class<TapBuildAction> getBuildActionClass() {

public TapBuildAction getLastBuildAction() {
TapBuildAction action = null;
final AbstractBuild<?, ?> lastBuild = this.getLastBuildWithTap();
final Run<?, ?> lastBuild = this.getLastBuildWithTap();

if (lastBuild != null) {
action = lastBuild.getAction(TapBuildAction.class);
Expand All @@ -105,8 +104,8 @@ public TapBuildAction getLastBuildAction() {
/**
* @return
*/
private AbstractBuild<?, ?> getLastBuildWithTap() {
AbstractBuild<?, ?> lastBuild = this.project.getLastBuild();
private Run<?, ?> getLastBuildWithTap() {
Run<?, ?> lastBuild = this.job.getLastBuild();
while (lastBuild != null && lastBuild.getAction(TapBuildAction.class) == null) {
lastBuild = lastBuild.getPreviousBuild();
}
Expand All @@ -115,7 +114,7 @@ public TapBuildAction getLastBuildAction() {

public void doIndex( final StaplerRequest request,
final StaplerResponse response ) throws IOException {
AbstractBuild<?, ?> lastBuild = this.getLastBuildWithTap();
Run<?, ?> lastBuild = this.getLastBuildWithTap();
if (lastBuild == null) {
response.sendRedirect2("nodata");
} else {
Expand Down Expand Up @@ -169,17 +168,16 @@ protected JFreeChart createGraph() {
* @return value for property 'graphAvailable'
*/
public boolean isGraphActive() {
AbstractBuild<?, ?> build = getProject().getLastBuild();
AbstractProject<?,?> p = getProject();
Run<?, ?> build = this.job.getLastBuild();
// in order to have a graph, we must have at least two points.
int numPoints = 0;
while (numPoints < 2) {
if (build == null) {
return false;
}
if( p instanceof MatrixProject )
if( this.job instanceof MatrixProject )
{
MatrixProject mp = (MatrixProject) p;
MatrixProject mp = (MatrixProject) this.job;

for (Job j : mp.getAllJobs()) {
if (j != mp) { //getAllJobs includes the parent job too, so skip that
Expand Down Expand Up @@ -215,10 +213,10 @@ public boolean isGraphActive() {
* @return true, if new image does NOT need to be generated, false otherwise
*/
private boolean newGraphNotNeeded( final StaplerRequest req, StaplerResponse rsp ) {
Calendar t = getProject().getLastCompletedBuild().getTimestamp();
Calendar t = this.job.getLastCompletedBuild().getTimestamp();
Integer prevNumBuilds = requestMap.get(req.getRequestURI());
int numBuilds = 0;
RunList<?> builds = getProject().getBuilds();
RunList<?> builds = this.job.getBuilds();
Iterator<?> it = builds.iterator();
while (it.hasNext()) {
it.next();
Expand Down Expand Up @@ -248,10 +246,21 @@ private boolean newGraphNotNeeded( final StaplerRequest req, StaplerResponse rsp

protected void populateDataSetBuilder(DataSetBuilder<String, ChartUtil.NumberOnlyBuildLabel> dataset ) {

AbstractProject<?, ?> p = getProject();
Job<?, ?> p = this.job;

for (Run<?, ?> build = getProject().getLastBuild(); build != null; build = build.getPreviousBuild()) {
ChartUtil.NumberOnlyBuildLabel label = new ChartUtil.NumberOnlyBuildLabel((Run<?, ?>) build);
for (Run<?, ?> build = this.job.getLastBuild(); build != null; build = build.getPreviousBuild()) {

/*
* The build has most likely failed before any TAP data was recorded.
*
* If we don't exclude such builds, we'd have to account for that in GraphHelper. Besides that, it's not
* consistent with JUnit graph behaviour where builds without test results are not included in graph.
*/
if (build.getAction(TapBuildAction.class) == null) {
continue;
}

ChartUtil.NumberOnlyBuildLabel label = new ChartUtil.NumberOnlyBuildLabel((Run) build);

Result r = new Result();

Expand Down

0 comments on commit b39c1fd

Please sign in to comment.