package hudson.plugins.cigame.rules.unittesting; import hudson.model.AbstractBuild; import hudson.model.Result; import hudson.plugins.cigame.model.Rule; import hudson.plugins.cigame.model.RuleResult; import hudson.tasks.test.AbstractTestResultAction; import java.util.List; /** * Rule that gives points for increasing the number of passed tests. */ public class IncreasingPassedTestsRule implements Rule { private int pointsForEachFixedFailure; public IncreasingPassedTestsRule() { this(1); } public IncreasingPassedTestsRule(int points) { pointsForEachFixedFailure = points; } @SuppressWarnings("unchecked") public RuleResult evaluate(AbstractBuild<?, ?> build) { List<AbstractTestResultAction> actions = build.getActions(AbstractTestResultAction.class); for (AbstractTestResultAction action : actions) { if ((action != null) && (action.getPreviousResult() != null)) { return evaluate(build.getResult(), build.getPreviousBuild().getResult(), action.getTotalCount()-action.getFailCount() - action.getSkipCount(), action.getPreviousResult().getTotalCount()-action.getPreviousResult().getFailCount() - action.getPreviousResult().getSkipCount()); } } return null; } RuleResult evaluate(Result currentResult, Result previousResult, int currentPassCount, int previousPassCount) { if ((previousResult.isBetterThan(Result.FAILURE)) && (currentResult.isBetterOrEqualTo(Result.UNSTABLE))) { int passedTestDiff = currentPassCount - previousPassCount; if (passedTestDiff > 0) { return new RuleResult(passedTestDiff * pointsForEachFixedFailure, Messages.UnitTestingRuleSet_IncreasingPassedRule_Count(passedTestDiff)); //$NON-NLS-1$ } } return null; } public String getName() { return Messages.UnitTestingRuleSet_IncreasingPassedRule_Name(); //$NON-NLS-1$ } }