diff options
2 files changed, 120 insertions, 38 deletions
diff --git a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java index 23c83392..69c86019 100644 --- a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java +++ b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java @@ -841,46 +841,66 @@ public class HudsonServerBehaviour extends BuildServerBehaviour { } protected void updateStateAndStatus(HudsonModelJob job, IBuildPlan plan) { - if (job.getColor().equals(HudsonModelBallColor.BLUE) || job.getColor().equals(HudsonModelBallColor.GREEN)) { - plan.setStatus(BuildStatus.SUCCESS); - plan.setState(BuildState.STOPPED); - } else if (job.getColor().equals(HudsonModelBallColor.BLUE_ANIME) - || job.getColor().equals(HudsonModelBallColor.GREEN_ANIME)) { - plan.setStatus(BuildStatus.SUCCESS); - plan.setState(BuildState.RUNNING); - } else if (job.getColor().equals(HudsonModelBallColor.RED)) { - plan.setStatus(BuildStatus.FAILED); - plan.setState(BuildState.STOPPED); - } else if (job.getColor().equals(HudsonModelBallColor.RED_ANIME)) { - plan.setStatus(BuildStatus.FAILED); - plan.setState(BuildState.RUNNING); - } else if (job.getColor().equals(HudsonModelBallColor.YELLOW)) { - plan.setStatus(BuildStatus.UNSTABLE); - plan.setState(BuildState.STOPPED); - } else if (job.getColor().equals(HudsonModelBallColor.YELLOW_ANIME)) { - plan.setStatus(BuildStatus.UNSTABLE); - plan.setState(BuildState.RUNNING); - } else if (job.getColor().equals(HudsonModelBallColor.GREY)) { - plan.setStatus(BuildStatus.DISABLED); - plan.setState(BuildState.STOPPED); - } else if (job.getColor().equals(HudsonModelBallColor.GREY_ANIME)) { - plan.setStatus(BuildStatus.DISABLED); - plan.setState(BuildState.RUNNING); - } else if (job.getColor().equals(HudsonModelBallColor.DISABLED)) { - plan.setStatus(BuildStatus.DISABLED); - plan.setState(BuildState.STOPPED); - } else if (job.getColor().equals(HudsonModelBallColor.DISABLED_ANIME)) { - plan.setStatus(BuildStatus.DISABLED); - plan.setState(BuildState.RUNNING); - } else if (job.getColor().equals(HudsonModelBallColor.ABORTED)) { - plan.setStatus(BuildStatus.ABORTED); - plan.setState(BuildState.STOPPED); - } else if (job.getColor().equals(HudsonModelBallColor.ABORTED_ANIME)) { - plan.setStatus(BuildStatus.ABORTED); - plan.setState(BuildState.RUNNING); - } else { + HudsonModelBallColor color = job.getColor(); + if (color == null) { plan.setStatus(null); plan.setState(null); + } else { + switch (color) { + case BLUE: + case GREEN: + plan.setStatus(BuildStatus.SUCCESS); + plan.setState(BuildState.STOPPED); + break; + case BLUE_ANIME: + case GREEN_ANIME: + plan.setStatus(BuildStatus.SUCCESS); + plan.setState(BuildState.RUNNING); + break; + case RED: + plan.setStatus(BuildStatus.FAILED); + plan.setState(BuildState.STOPPED); + break; + case RED_ANIME: + plan.setStatus(BuildStatus.FAILED); + plan.setState(BuildState.RUNNING); + break; + case YELLOW: + plan.setStatus(BuildStatus.UNSTABLE); + plan.setState(BuildState.STOPPED); + break; + case YELLOW_ANIME: + plan.setStatus(BuildStatus.UNSTABLE); + plan.setState(BuildState.RUNNING); + break; + case GREY: + plan.setStatus(BuildStatus.DISABLED); + plan.setState(BuildState.STOPPED); + break; + case GREY_ANIME: + plan.setStatus(BuildStatus.DISABLED); + plan.setState(BuildState.RUNNING); + break; + case DISABLED: + plan.setStatus(BuildStatus.DISABLED); + plan.setState(BuildState.STOPPED); + break; + case DISABLED_ANIME: + plan.setStatus(BuildStatus.DISABLED); + plan.setState(BuildState.RUNNING); + break; + case ABORTED: + plan.setStatus(BuildStatus.ABORTED); + plan.setState(BuildState.STOPPED); + break; + case ABORTED_ANIME: + plan.setStatus(BuildStatus.ABORTED); + plan.setState(BuildState.RUNNING); + break; + default: + plan.setStatus(null); + plan.setState(null); + } } EnumSet<BuildState> flags = EnumSet.noneOf(BuildState.class); diff --git a/org.eclipse.mylyn.hudson.tests/src/org/eclipse/mylyn/hudson/tests/core/HudsonServerBehaviourTest.java b/org.eclipse.mylyn.hudson.tests/src/org/eclipse/mylyn/hudson/tests/core/HudsonServerBehaviourTest.java index c5e6a788..6f29fd55 100644 --- a/org.eclipse.mylyn.hudson.tests/src/org/eclipse/mylyn/hudson/tests/core/HudsonServerBehaviourTest.java +++ b/org.eclipse.mylyn.hudson.tests/src/org/eclipse/mylyn/hudson/tests/core/HudsonServerBehaviourTest.java @@ -11,8 +11,13 @@ package org.eclipse.mylyn.hudson.tests.core; +import java.util.HashSet; +import java.util.Set; + import junit.framework.TestCase; +import org.eclipse.mylyn.builds.core.BuildState; +import org.eclipse.mylyn.builds.core.IBuildPlan; import org.eclipse.mylyn.commons.repositories.core.RepositoryLocation; import org.eclipse.mylyn.internal.hudson.core.HudsonServerBehaviour; import org.eclipse.mylyn.internal.hudson.core.client.HudsonConfigurationCache; @@ -44,4 +49,61 @@ public class HudsonServerBehaviourTest extends TestCase { assertEquals(80, behaviour.parseJob(job).getHealth()); } + public void testParseJobNoColor() throws Exception { + HudsonServerBehaviour behaviour = new HudsonServerBehaviour(new RepositoryLocation(), + new HudsonConfigurationCache()); + HudsonModelJob job = new HudsonModelJob(); + + IBuildPlan buildPlan = behaviour.parseJob(job); + + assertNull(buildPlan.getState()); + assertNull(buildPlan.getStatus()); + } + + public void testParseJobRunningColor() throws Exception { + HudsonServerBehaviour behaviour = new HudsonServerBehaviour(new RepositoryLocation(), + new HudsonConfigurationCache()); + HudsonModelJob job = new HudsonModelJob(); + + for (HudsonModelBallColor color : getRunningColors()) { + job.setColor(color); + IBuildPlan buildPlan = behaviour.parseJob(job); + + assertEquals(BuildState.RUNNING, buildPlan.getState()); + } + } + + public void testParseJobStoppedColor() throws Exception { + HudsonServerBehaviour behaviour = new HudsonServerBehaviour(new RepositoryLocation(), + new HudsonConfigurationCache()); + HudsonModelJob job = new HudsonModelJob(); + + for (HudsonModelBallColor color : getStoppedColors()) { + job.setColor(color); + IBuildPlan buildPlan = behaviour.parseJob(job); + + assertEquals(BuildState.STOPPED, buildPlan.getState()); + } + } + + private Set<HudsonModelBallColor> getRunningColors() { + Set<HudsonModelBallColor> result = new HashSet<HudsonModelBallColor>(); + for (HudsonModelBallColor color : HudsonModelBallColor.values()) { + if (color.value().endsWith("_anime")) { + result.add(color); + } + } + return result; + } + + private Set<HudsonModelBallColor> getStoppedColors() { + Set<HudsonModelBallColor> result = new HashSet<HudsonModelBallColor>(); + for (HudsonModelBallColor color : HudsonModelBallColor.values()) { + if (!color.value().endsWith("_anime")) { + result.add(color); + } + } + return result; + } + } |