package hudson.plugins.emailext.plugins.content; import hudson.Extension; import hudson.FilePath; import hudson.model.AbstractBuild; import hudson.model.Run; import hudson.model.TaskListener; import hudson.tasks.test.AbstractTestResultAction; import org.jenkinsci.plugins.tokenmacro.DataBoundTokenMacro; import org.jenkinsci.plugins.tokenmacro.MacroEvaluationException; import java.io.IOException; /** * Displays the number of tests. * * @author Seiji Sogabe */ @Extension public class TestCountsContent extends DataBoundTokenMacro { public static final String MACRO_NAME = "TEST_COUNTS"; private static final String VAR_DEFAULT_VALUE = "total"; @Parameter public String var = VAR_DEFAULT_VALUE; @Override public boolean acceptsMacroName(String macroName) { return macroName.equals(MACRO_NAME); } @Override public String evaluate(AbstractBuild<?, ?> build, TaskListener listener, String macroName) throws MacroEvaluationException, IOException, InterruptedException { return evaluate(build, build.getWorkspace(), listener, macroName); } @Override public String evaluate(Run<?, ?> run, FilePath workspace, TaskListener listener, String macroName) throws MacroEvaluationException, IOException, InterruptedException { AbstractTestResultAction<?> action = run.getAction(AbstractTestResultAction.class); if (action == null) { return ""; } var = var.toLowerCase(); if ("total".equals(var)) { return String.valueOf(action.getTotalCount()); } else if ("pass".equals(var)) { return String.valueOf(action.getTotalCount()-action.getFailCount()-action.getSkipCount()); } else if ("fail".equals(var)) { return String.valueOf(action.getFailCount()); } else if ("skip".equals(var)) { return String.valueOf(action.getSkipCount()); } return ""; } }