From 8d7af4a10ae1965e50b0d92a8ad2ab100d344e8e Mon Sep 17 00:00:00 2001 From: Yann PETIT Date: Wed, 18 Apr 2012 15:14:54 +0200 Subject: [PATCH] JENKINS-11041 --- .../plugins/cigame/model/ScoreCard.java | 31 +++++++++++-------- .../plugins/cigame/model/ScoreCardTest.java | 21 ++++++++++--- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/main/java/hudson/plugins/cigame/model/ScoreCard.java b/src/main/java/hudson/plugins/cigame/model/ScoreCard.java index 3104e87..6a2966a 100644 --- a/src/main/java/hudson/plugins/cigame/model/ScoreCard.java +++ b/src/main/java/hudson/plugins/cigame/model/ScoreCard.java @@ -3,8 +3,8 @@ import hudson.maven.MavenBuild; import hudson.maven.MavenModule; import hudson.maven.MavenModuleSetBuild; -import hudson.model.AbstractBuild; import hudson.model.BuildListener; +import hudson.model.AbstractBuild; import hudson.plugins.cigame.util.BuildUtil; import java.util.ArrayList; @@ -38,18 +38,23 @@ public void record(AbstractBuild build, RuleSet ruleset, BuildListener lis List scoresForBuild = new LinkedList(); for (Rule rule : ruleset.getRules()) { - if (listener != null) { - listener.getLogger().append("[ci-game] evaluating rule: " + rule.getName() + "\n"); - } - RuleResult result = evaluate(build, rule); - if ((result != null) && (result.getPoints() != 0)) { - Score score = new Score(ruleset.getName(), rule.getName(), result.getPoints(), result.getDescription()); - scoresForBuild.add(score); - - if (listener != null) { - listener.getLogger().append("[ci-game] scored: " + score.getValue() + "\n"); - } - } + if (null != rule){ + if (listener != null) { + listener.getLogger().append("[ci-game] evaluating rule: " + rule.getName() + "\n"); + } + RuleResult result = evaluate(build, rule); + if ((result != null) && (result.getPoints() != 0)) { + Score score = new Score(ruleset.getName(), rule.getName(), result.getPoints(), result.getDescription()); + scoresForBuild.add(score); + if (listener != null) { + listener.getLogger().append("[ci-game] scored: " + score.getValue() + "\n"); + } + } + } else { + if (listener != null) { + listener.getLogger().append("[ci-game] null rule encountered\n"); + } + } } // prevent ConcurrentModificationExceptions for e.g. matrix builds (see JENKINS-11498): diff --git a/src/test/java/hudson/plugins/cigame/model/ScoreCardTest.java b/src/test/java/hudson/plugins/cigame/model/ScoreCardTest.java index e1bfd11..0dee544 100644 --- a/src/test/java/hudson/plugins/cigame/model/ScoreCardTest.java +++ b/src/test/java/hudson/plugins/cigame/model/ScoreCardTest.java @@ -1,12 +1,15 @@ package hudson.plugins.cigame.model; -import static org.mockito.Mockito.*; -import static org.junit.Assert.*; -import static org.hamcrest.CoreMatchers.*; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Matchers.isA; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import hudson.model.AbstractBuild; +import java.util.ArrayList; import java.util.Arrays; - -import hudson.model.AbstractBuild; +import java.util.List; import org.junit.Test; @@ -27,6 +30,14 @@ public void assertThatEmptyRuleResultIsNotUsed() { assertThat(card.getScores().size(), is(0)); } + @Test + public void assertRuleNull(){ + List liste = new ArrayList(); + liste.add(null); + ScoreCard card = new ScoreCard(); + card.record(mock(AbstractBuild.class), new RuleSet("test", liste), null); + } + @Test public void assertEmptyRuleBookDoesNotThrowIllegalException() { ScoreCard scoreCard = new ScoreCard();