package hudson.model; import static org.junit.Assert.assertTrue; import java.io.ByteArrayOutputStream; import hudson.console.AnnotatedLargeText; import hudson.security.ACL; import hudson.security.Permission; import org.acegisecurity.Authentication; import org.junit.Test; /** * @author Jerome Lacoste */ public class TaskActionTest { private static class MyTaskThread extends TaskThread { MyTaskThread(TaskAction taskAction) { super(taskAction, ListenerAndText.forMemory(taskAction)); } protected void perform(TaskListener listener) throws Exception { listener.hyperlink("/localpath", "a link"); } } private static class MyTaskAction extends TaskAction { void start() { workerThread = new MyTaskThread(this); workerThread.start(); } public String getIconFileName() { return "Iconfilename"; } public String getDisplayName() { return "My Task Thread"; } public String getUrlName() { return "xyz"; } protected Permission getPermission() { return Permission.READ; } protected ACL getACL() { return new ACL() { public boolean hasPermission(Authentication a, Permission permission) { return true; } }; } } @Test public void annotatedText() throws Exception { MyTaskAction action = new MyTaskAction(); action.start(); AnnotatedLargeText annotatedText = action.obtainLog(); while (!annotatedText.isComplete()) { Thread.sleep(10); } ByteArrayOutputStream os = new ByteArrayOutputStream(); annotatedText.writeLogTo(0, os); assertTrue(os.toString("UTF-8").startsWith("a linkCompleted")); } }