Skip to content

Commit

Permalink
Merge f15d834 into 6a5beee
Browse files Browse the repository at this point in the history
  • Loading branch information
patbos committed Aug 11, 2014
2 parents 6a5beee + f15d834 commit 8d85a28
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 4 deletions.
9 changes: 8 additions & 1 deletion src/main/java/se/diabol/jenkins/pipeline/domain/Stage.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package se.diabol.jenkins.pipeline.domain;

import com.google.common.collect.ImmutableList;
import hudson.matrix.MatrixConfiguration;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.ItemGroup;
Expand Down Expand Up @@ -146,7 +147,13 @@ public static List<Stage> extractStages(AbstractProject firstProject) throws Pip
Map<String, Stage> stages = newLinkedHashMap();
for (AbstractProject project : ProjectUtil.getAllDownstreamProjects(firstProject).values()) {
Task task = Task.getPrototypeTask(project);
PipelineProperty property = (PipelineProperty) project.getProperty(PipelineProperty.class);
PipelineProperty property;
if (project instanceof MatrixConfiguration) {
MatrixConfiguration configuration = (MatrixConfiguration) project;
property = configuration.getParent().getProperty(PipelineProperty.class);
} else {
property = (PipelineProperty) project.getProperty(PipelineProperty.class);
}
String stageName = property != null && !isNullOrEmpty(property.getStageName())
? property.getStageName() : project.getDisplayName();
Stage stage = stages.get(stageName);
Expand Down
17 changes: 14 additions & 3 deletions src/main/java/se/diabol/jenkins/pipeline/domain/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package se.diabol.jenkins.pipeline.domain;

import hudson.Util;
import hudson.matrix.MatrixConfiguration;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.ItemGroup;
Expand Down Expand Up @@ -114,9 +115,19 @@ public List<String> getDownstreamTasks() {
}

public static Task getPrototypeTask(AbstractProject project) {
PipelineProperty property = (PipelineProperty) project.getProperty(PipelineProperty.class);
String taskName = property != null && !isNullOrEmpty(property.getTaskName())
? property.getTaskName() : project.getDisplayName();
String taskName = null;
PipelineProperty property = null;
if (project instanceof MatrixConfiguration) {
MatrixConfiguration configuration = (MatrixConfiguration) project;
property = configuration.getParent().getProperty(PipelineProperty.class);
taskName = property != null && !isNullOrEmpty(property.getTaskName())
? property.getTaskName() + " " + project.getName() : project.getDisplayName();
} else {
property = (PipelineProperty) project.getProperty(PipelineProperty.class);
taskName = property != null && !isNullOrEmpty(property.getTaskName())
? property.getTaskName() : project.getDisplayName();
}

Status status = project.isDisabled() ? disabled() : idle();
List<AbstractProject> downstreams = ProjectUtil.getDownstreamProjects(project);
List<String> downStreamTasks = new ArrayList<String>();
Expand Down
32 changes: 32 additions & 0 deletions src/test/java/se/diabol/jenkins/pipeline/domain/StageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,20 @@
package se.diabol.jenkins.pipeline.domain;

import com.google.common.collect.Lists;
import hudson.matrix.Axis;
import hudson.matrix.AxisList;
import hudson.matrix.MatrixConfiguration;
import hudson.matrix.MatrixProject;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.WithoutJenkins;
import se.diabol.jenkins.pipeline.PipelineProperty;
import se.diabol.jenkins.pipeline.domain.status.StatusFactory;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

Expand All @@ -31,9 +40,12 @@
import static org.junit.Assert.assertNull;

public class StageTest {
@Rule
public JenkinsRule jenkins = new JenkinsRule();

@Test
@Bug(22211)
@WithoutJenkins
public void testSortByRowsCols() {
List<Stage> stages = new ArrayList<Stage>();
Stage stage1 = new Stage("1", Collections.<Task>emptyList());
Expand Down Expand Up @@ -80,6 +92,7 @@ public void testSortByRowsCols() {
*
*/
@Test
@WithoutJenkins
public void testSortByRowsCols2() {
List<Stage> stages = new ArrayList<Stage>();
Stage stageA = new Stage("A", Collections.<Task>emptyList());
Expand Down Expand Up @@ -164,10 +177,29 @@ public void testSortByRowsCols2() {


@Test
@WithoutJenkins
public void testFindStageForJob() {
Task task1 = new Task("build", "Build", StatusFactory.idle(), null, null, Collections.<String>emptyList());
List<Stage> stages = Lists.newArrayList(new Stage("QA", Lists.newArrayList(task1)));
assertNull(Stage.findStageForJob("nofind", stages));
assertNotNull(Stage.findStageForJob("build", stages));
}

@Test
public void testStageNameForMultiConfiguration() throws Exception {
MatrixProject project = jenkins.createMatrixProject("Multi");
project.setAxes(new AxisList(new Axis("axis", "foo", "bar")));
project.addProperty(new PipelineProperty("task", "stage"));

Collection<MatrixConfiguration> configurations = project.getActiveConfigurations();

for (MatrixConfiguration configuration : configurations) {
List<Stage> stages = Stage.extractStages(configuration);
assertEquals(1, stages.size());
Stage stage = stages.get(0);
assertEquals("stage", stage.getName());

}

}
}
25 changes: 25 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 @@ -18,6 +18,10 @@
package se.diabol.jenkins.pipeline.domain;

import hudson.Launcher;
import hudson.matrix.Axis;
import hudson.matrix.AxisList;
import hudson.matrix.MatrixConfiguration;
import hudson.matrix.MatrixProject;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.FreeStyleBuild;
Expand All @@ -26,10 +30,14 @@
import jenkins.model.Jenkins;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.TestBuilder;
import se.diabol.jenkins.pipeline.PipelineProperty;

import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;

import static org.junit.Assert.*;

Expand Down Expand Up @@ -93,4 +101,21 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher,
}


@Test
@Bug(22654)
public void testTaskNameForMultiConfiguration() throws Exception {
MatrixProject project = jenkins.createMatrixProject("Multi");
project.setAxes(new AxisList(new Axis("axis", "foo", "bar")));
project.addProperty(new PipelineProperty("task", "stage"));

Collection<MatrixConfiguration> configurations = project.getActiveConfigurations();

for (MatrixConfiguration configuration : configurations) {
Task task = Task.getPrototypeTask(configuration);
assertEquals("task " + configuration.getName(), task.getName());

}
}


}

0 comments on commit 8d85a28

Please sign in to comment.