Skip to content

Commit

Permalink
Merge pull request #85 from Diabol/JENKINS-25361_queue_status_manual
Browse files Browse the repository at this point in the history
JENKINS-25361 When retriggering a failed build status will not be QUEUED...
  • Loading branch information
patbos committed Oct 30, 2014
2 parents f7b0a42 + 28834cd commit e7a70e9
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 2 deletions.
5 changes: 4 additions & 1 deletion src/main/java/se/diabol/jenkins/pipeline/domain/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,10 @@ public static Task getPrototypeTask(AbstractProject project) {

public Task getLatestTask(ItemGroup context, AbstractBuild firstBuild) {
AbstractProject<?, ?> project = getProject(this, context);
AbstractBuild build = BuildUtil.match(project.getBuilds(), firstBuild);
AbstractBuild build = null;
if (!ProjectUtil.isQueued(project, firstBuild)) {
build = BuildUtil.match(project.getBuilds(), firstBuild);
}

Status taskStatus = SimpleStatus.resolveStatus(project, build, firstBuild);
String taskLink;
Expand Down
17 changes: 16 additions & 1 deletion src/main/java/se/diabol/jenkins/pipeline/util/BuildUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ public static AbstractBuild getFirstUpstreamBuild(AbstractBuild build, AbstractP
public static AbstractBuild match(RunList<? extends AbstractBuild> runList, AbstractBuild firstBuild) {
if (firstBuild != null) {
for (AbstractBuild currentBuild : runList) {
if (firstBuild.equals(BuildUtil.getFirstUpstreamBuild(currentBuild, firstBuild.getProject()))) {
AbstractBuild build = BuildUtil.getFirstUpstreamBuild(currentBuild, firstBuild.getProject());
if (equals(build, firstBuild)) {
return currentBuild;
}
}
Expand All @@ -89,4 +90,18 @@ public static AbstractBuild match(RunList<? extends AbstractBuild> runList, Abst
}


public static boolean equals(AbstractBuild b1, AbstractBuild b2) {
if (b1 != null && b2 != null) {
if (b1.getProject().getFullName().equals(b2.getProject().getFullName()) && b1.getNumber() == b2.getNumber()) {
return true;
} else {
return false;
}
} else {
return false;
}

}


}
28 changes: 28 additions & 0 deletions src/test/java/se/diabol/jenkins/pipeline/domain/TaskTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,13 @@
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.FailureBuilder;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.TestBuilder;
import se.diabol.jenkins.pipeline.DeliveryPipelineView;
import se.diabol.jenkins.pipeline.PipelineProperty;
import se.diabol.jenkins.pipeline.domain.status.SimpleStatus;
import se.diabol.jenkins.pipeline.domain.status.Status;

import java.io.IOException;
import java.util.Collection;
Expand Down Expand Up @@ -131,4 +135,28 @@ public void testTaskNameForMultiConfiguration() throws Exception {
}


@Test
public void testFailedThenQueued() throws Exception {
FreeStyleProject a = jenkins.createFreeStyleProject("a");
FreeStyleProject b = jenkins.createFreeStyleProject("b");
jenkins.setQuietPeriod(0);
a.getPublishersList().add(new BuildPipelineTrigger("b", null));
b.getBuildersList().add(new FailureBuilder());
FreeStyleBuild build = jenkins.buildAndAssertSuccess(a);
Task task = Task.getPrototypeTask(b);
assertTrue(task.getLatestTask(jenkins.getInstance(), build).getStatus().isIdle());

DeliveryPipelineView view = new DeliveryPipelineView("Pipeline", jenkins.getInstance());
view.triggerManual("b", "a", "1");
jenkins.waitUntilNoActivity();
assertTrue(task.getLatestTask(jenkins.getInstance(), build).getStatus().isFailed());
jenkins.getInstance().setNumExecutors(0);
jenkins.getInstance().reload();
view.triggerManual("b", "a", "1");

assertTrue(task.getLatestTask(jenkins.getInstance(), build).getStatus().isQueued());

}


}
18 changes: 18 additions & 0 deletions src/test/java/se/diabol/jenkins/pipeline/util/BuildUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.MockFolder;
import org.jvnet.hudson.test.WithoutJenkins;
import se.diabol.jenkins.pipeline.test.TestUtil;

Expand Down Expand Up @@ -87,6 +88,23 @@ public void testGetUpstreamBuildProjectRenamed() {

}

@Test
public void testEquals() throws Exception {
MockFolder folder1 = jenkins.createFolder("Folder1");
MockFolder folder2 = jenkins.createFolder("Folder2");
FreeStyleProject job1 = folder1.createProject(FreeStyleProject.class, "a");
FreeStyleProject job2 = folder2.createProject(FreeStyleProject.class, "a");
AbstractBuild build1 = jenkins.buildAndAssertSuccess(job1);
AbstractBuild build2 = jenkins.buildAndAssertSuccess(job2);
assertFalse(BuildUtil.equals(build1, build2));
assertTrue(BuildUtil.equals(build1, build1));
AbstractBuild build3 = jenkins.buildAndAssertSuccess(job1);
assertFalse(BuildUtil.equals(build1, build3));
assertFalse(BuildUtil.equals(null, null));


}




Expand Down

0 comments on commit e7a70e9

Please sign in to comment.