package hudson.plugins.descriptionsetter; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.BuildListener; import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; import hudson.model.Result; import hudson.tasks.Builder; import java.io.IOException; import java.io.Serializable; import org.jvnet.hudson.test.HudsonTestCase; import static org.junit.Assert.*; public class DescriptionSetterPublisherTest extends HudsonTestCase { private static final class MyBuilder extends Builder { private final String text; private final Result result; public MyBuilder(String text, Result result) { super(); this.text = text; this.result = result; } @Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { listener.getLogger().println(text); build.setResult(result); return true; } } public void testSuccessDefaultDescription() throws Exception { assertEquals("one", getDescription("text one", Result.SUCCESS, "text (.*)", null, null, null)); } public void testSuccessConfiguredDescription() throws Exception { assertEquals("description one", getDescription("text one", Result.SUCCESS, "text (.*)", null, "description \\1", null)); } public void testSuccessConfiguredDescription2() throws Exception { assertEquals("description one two", getDescription("text one two", Result.SUCCESS, "text (\\w+) (\\w+)", null, "description \\1 \\2", null)); } public void testFailureWithNoFailureRegex() throws Exception { assertEquals("one", getDescription("text one", Result.FAILURE, "text (.*)", null, null, null)); } public void testFailureWithFailureRegexAndDefaultDescrption() throws Exception { assertEquals("text", getDescription("text one", Result.FAILURE, "text (.*)", "(.*) one", null, null)); } public void testFailureWithFailureRegexAndConfiguredDescription() throws Exception { assertEquals("description text", getDescription("text one", Result.FAILURE, "text (.*)", "(.*) one", null, "description \\1")); } public void testSuccessWithFixedDescription() throws Exception { assertEquals("description success", getDescription("xxx", Result.SUCCESS, null, null, "description success", "description failure")); } public void testFailureWithFixedDescription() throws Exception { assertEquals("description failure", getDescription("xxx", Result.FAILURE, null, null, "description success", "description failure")); } public void testSuccessNoMatch() throws Exception { assertEquals(null, getDescription("xxx", Result.SUCCESS, "regex", null, "description success", null)); } public void testURL() throws Exception { assertEquals("<a href=\"http://foo/bar\">http://foo/bar</a>", getDescription("url:http://foo/bar", Result.SUCCESS, "url:(.*)", null, null, null)); } private String getDescription(String text, Result result, String regexp, String regexpForFailed, String description, String descriptionForFailed) throws Exception { FreeStyleProject project = createFreeStyleProject(); project.getBuildersList().add(new MyBuilder(text, result)); project.getPublishersList().add( new DescriptionSetterPublisher(regexp, regexpForFailed, description, descriptionForFailed, false)); FreeStyleBuild build = project.scheduleBuild2(0).get(); return build.getDescription(); } }